Compartir a través de


Cómo controlar un evento de control (Windows Forms .NET)

Los eventos de los controles (y de los formularios) se establecen generalmente a través del Diseñador visual de Visual Studio para Windows Forms. Establecer un evento a través del Diseñador visual se conoce como control de un evento en tiempo de diseño. También puede controlar eventos en el código de forma dinámica, lo que se conoce como control de eventos en tiempo de ejecución. Un evento creado en tiempo de ejecución permite conectar controladores de eventos de forma dinámica en función de lo que la aplicación está haciendo actualmente.

Importante

La documentación de la guía de escritorio para .NET 7 y .NET 6 está en proceso de elaboración.

Control de un evento: diseñador

En Visual Studio, use el Diseñador visual para administrar controladores para eventos de control. El Diseñador visual generará el código de controlador y lo agregará al evento.

Establecimiento del controlador

Use el panel Propiedades para agregar o establecer el controlador de un evento:

  1. Abra el Diseñador visual del formulario que contiene el control que se debe cambiar.

  2. Seleccione el control.

  3. Cambie el modo del panel Propiedades a Eventos presionando el botón de eventos ( ).

  4. Busque el evento al que desea agregar un controlador, por ejemplo, el evento Click:

    Panel de propiedades de Visual Studio que se muestra con el modo de eventos habilitado y el evento de clic.

  5. Realice una de las siguientes acciones:

    • Haga doble clic en el evento para generar un nuevo controlador; está en blanco si no se asigna ningún controlador. Si no está en blanco, esta acción abre el código del formulario y navega al controlador existente.

    • Use el cuadro de selección ( ) para elegir un controlador existente.

      El cuadro de selección enumerará todos los métodos que tienen una firma de método compatible con el controlador de eventos.

Borrado del controlador

Para quitar un controlador de eventos, no puede eliminar solo el código de controlador que se encuentra en el archivo de código subyacente del formulario, el evento todavía hace referencia a él. Use el panel Propiedades para quitar el controlador de un evento:

  1. Abra el Diseñador visual del formulario que contiene el control que se debe cambiar.

  2. Seleccione el control.

  3. Cambie el modo del panel Propiedades a Eventos presionando el botón de eventos ( ).

  4. Busque el evento que contiene el controlador que desea quitar, por ejemplo, el evento Click:

    Panel de propiedades de Visual Studio que se muestra con el modo de eventos habilitado y el evento de clic.

  5. Haga clic con el botón derecho en el evento y elija Restablecer.

Control de un evento: código

Normalmente, los controladores de eventos se agregan a los controles en tiempo de diseño a través del Diseñador visual. Pero, puede crear controles en tiempo de ejecución, lo que requiere que se agreguen controladores de eventos al código. Agregar controladores al código también ofrece la oportunidad de agregar varios controladores al mismo evento.

Adición de un controlador

En el ejemplo siguiente se muestra cómo crear un control y agregar un controlador de eventos. Este control se crea en un botón diferente en el controlador de eventos Button.Click. Cuando se presiona Button1. El código mueve y cambia el tamaño de un botón nuevo. El método MyNewButton_Click controla el evento Click del nuevo botón. Para que aparezca el nuevo botón, se agrega a la colección Controls del formulario. También existe código para quitar el controlador del evento Button1.Click, que se describe en la sección Quitar el controlador.

private void button1_Click(object sender, EventArgs e)
{
    // Create and add the button
    Button myNewButton = new()
    {
        Location = new Point(10, 10),
        Size = new Size(120, 25),
        Text = "Do work"
    };

    // Handle the Click event for the new button
    myNewButton.Click += MyNewButton_Click;
    this.Controls.Add(myNewButton);

    // Remove this button handler so the user cannot do this twice
    button1.Click -= button1_Click;
}

private void MyNewButton_Click(object sender, EventArgs e)
{
    
}
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    'Create and add the button
    Dim myNewButton As New Button() With {.Location = New Point(10, 10),
                                          .Size = New Size(120, 25),
                                          .Text = "Do work"}

    'Handle the Click event for the new button
    AddHandler myNewButton.Click, AddressOf MyNewButton_Click
    Me.Controls.Add(myNewButton)

    'Remove this button handler so the user cannot do this twice
    RemoveHandler Button1.Click, AddressOf Button1_Click
End Sub

Private Sub MyNewButton_Click(sender As Object, e As EventArgs)

End Sub

Para ejecutar este código, haga lo siguiente en un formulario con el Diseñador visual de Visual Studio:

  1. Agregue un nuevo botón al formulario y asígnele el nombre Button1.
  2. Cambie el modo del panel Propiedades a Eventos presionando el botón de evento ( ).
  3. Haga doble clic en el evento Click para generar un controlador. Esta acción abre la ventana de código y genera un método Button1_Click en blanco.
  4. Reemplace el código del método por el código anterior.

Para obtener más información sobre los eventos de C#, vea Eventos (Guía de programación de C#). Para obtener más información sobre los eventos de Visual Basic, vea Eventos (Visual Basic)

Eliminación del controlador

La sección Agregar un controlador usó código para mostrar cómo agregar un controlador. Ese código también contenía una llamada para quitar un controlador:

button1.Click -= button1_Click;
RemoveHandler Button1.Click, AddressOf Button1_Click

Esta sintaxis se puede usar para quitar cualquier controlador de eventos de cualquier evento.

Para obtener más información sobre los eventos de C#, vea Eventos (Guía de programación de C#). Para obtener más información sobre los eventos de Visual Basic, vea Eventos (Visual Basic)

Uso de varios eventos con el mismo controlador

Con el panel de Propiedades del Diseñador visual de Visual Studio, puede seleccionar el mismo controlador que ya esté en uso por otro evento. Siga las instrucciones de la sección Establecer el controlador para seleccionar un controlador existente en lugar de crear uno nuevo.

En C#, el controlador se adjunta al evento de un control en el código del diseñador del formulario, que cambió a través del Diseñador visual. Para más información sobre eventos C#, consulte Eventos (Guía de programación de C#)

Visual Basic

En Visual Basic, el controlador se adjunta al evento de un control en el archivo de código subyacente del formulario, donde se declara el código del controlador de eventos. Se pueden agregar varias palabras clave Handles al código del controlador de eventos para usarla con varios eventos. El Diseñador visual generará la palabra clave Handles y la agregará al evento. Pero, puede hacerlo fácilmente con el controlador de eventos y eventos de cualquier control, siempre y cuando la firma del método de controlador coincida con el evento. Para más información sobre los eventos de Visual Basic, vea Eventos (Visual Basic)

Este código muestra cómo se puede usar el mismo método como controlador para dos eventos Button.Click diferentes:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click
    'Do some work to handle the events
End Sub

Vea también