Tengo algunos eventos que creé yo solo y me preguntaba cómo criarlos cuando quisiera.Levantar eventos personalizados en C# WinForms
Probablemente el diseño de mi aplicación también esté mal, podría echarle un vistazo si lo desea.
Ésta es la estructura
ProgramContext
- Form MainWindow
+ Control TextBox
+ Control Button
+ ...
En este caso, el MainWindow.TextBox
mantiene cierta información que se actualiza muy a menudo en tiempo de ejecución. Por lo tanto, de alguna manera necesito que se actualice cuando quiero (para que pueda volver a cargar sus datos desde la base de datos, donde está almacenado)
Intenté conectar un EventHandler
a su Validating
-Event, pero eso no parecía para hacer el truco
Así que, básicamente, tienen un método que vuelve a cargar los datos en ProgramContext
DataTable table = _adapter.GetData();
foreach (DataRow row in table.Rows)
{
MainWindow.TextBox.Text += table.Text.ToString();
}
que hay que hacer cada vez que se ejecuta otro método (que escribe nuevos datos en table
).
¿Alguna idea?
En su ejemplo, en lugar de declarar un nuevo delegado, sería más claro para utilizar sólo el genérico '' EventHandler' como en acto público manejador de sucesos MyEvent' –
También probé enganchando a 'TextChanged', pero que terminará en un bucle infinito, ya que quiero cambiar el texto dentro del EventHandler –
Puede cambiar el texto dentro del controlador, pero debe eliminar el evento mientras dure el método.Puedes hacerlo así: llama a 'this.TextChanged - = SomeClassName_TextChanged' para deshabilitar el evento para esta persona que llama, haz algunas cosas en el método y luego llama a' this.TextChanged + = SomeClassName_TextChanged' para reactivar el evento. – Nebula