EDITAR: Este método realmente funciona muy bien y lo pregunté y luego encontré la solución. Agregué la llamada correcta en el método ShowDialog() sobrecargado (no es una sobrecarga, o incluso una anulación, pero funciona igual. Mi nueva pregunta es la que está en la parte inferior.¿Es posible sobrecargar el método ShowDialog para formularios y devolver un resultado diferente?
Tengo un formulario .. en la que hace clic en uno de los tres botones que he definido una enumeración de los resultados devueltos Quiero hacer la llamada:
MyFormResults res = MyForm.ShowDialog();
puedo añadir un nuevo método ShowDialog con este código:
public new MyFormResults ShowDialog()
{
//Show modal dialog
base.ShowDialog(); //This works and somehow I missed this
return myResult; //Form level variable (read on)
}
Configuré una variable de nivel de formulario para el resultado cuando se hace clic en los botones:
MyFormResults myResult;
private void btn1_click(object sender, EventArgs e)
{
myResult = MyFormsResults.Result1;
this.DialogResult = DialogResult.OK; //Do I need this for the original ShowDialog() call?
this.Close(); //Should I close the dialog here or in my new ShowDialog() function?
}
//Same as above for the other results
Lo único que me falta es el código para mostrar el cuadro de diálogo (modal) y luego regresar mi resultado. No hay función base.ShowDialog()
, entonces, ¿cómo hago esto?
EDITAR: Hay un 'base.ShowDialog()' y funciona. Esta es mi nueva pregunta aquí:
Además, ¿es esta la mejor manera de hacer todo esto y por qué?
Gracias.
OK, bastante avergonzado, pero hay una "base".ShowDialog() "y funciona bien. Estaba intentando" this.base.ShowDialog() ". Esto funciona perfectamente. –