Dela via


Så här hanterar du en kontrollhändelse

Händelser för kontroller (och för formulär) anges vanligtvis via Visual Studio Visual Designer för Windows-formulär. Att ange en händelse via Visual Designer kallas för att hantera en händelse vid designtillfället. Du kan också hantera händelser dynamiskt i kod, så kallade hanteringshändelser vid körning. En händelse som skapas under körning gör det möjligt att ansluta händelsehanterare dynamiskt beroende på vad din app gör just nu.

Hantera en händelse under designfasen

I Visual Studio använder du Visual Designer för att hantera hanterare för kontrollhändelser. Visual Designer genererar hanteringskoden och lägger till den i händelsen åt dig.

Ange hanteraren

Använd fönstret Egenskaper för att lägga till eller ange hanteraren för en händelse:

  1. Öppna visualiseringsdesignern för formuläret som innehåller kontrollen som ska ändras.

  2. Välj kontrollen.

  3. Ändra egenskaper fönsterläge till Händelser genom att trycka på knappen händelser ( ).

  4. Hitta den händelse du vill lägga till en hanterare till, till exempel Klick händelsen.

    egenskapsfönstret i Visual Studio som visas med händelseläget aktiverat och klickhändelsen.

  5. Gör något av följande:

    • Dubbelklicka på händelsen för att generera en ny hanterare. Den är tom om ingen hanterare har tilldelats. Om den inte är tom öppnar den här åtgärden koden för formuläret och navigerar till den befintliga hanteraren.

    • Använd markeringsrutan ( ) för att välja en befintlig hanterare.

      I markeringsrutan visas alla metoder som har en kompatibel metodsignatur för händelsehanteraren.

Rensa hanteraren

Om du vill ta bort en händelsehanterare kan du inte bara ta bort hanteringskoden som finns i formulärets kod bakom-fil, den refereras fortfarande av designern. Använd fönstret Egenskaper för att ta bort hanteraren för en händelse:

  1. Öppna visualiseringsdesignern för formuläret som innehåller kontrollen som ska ändras.

  2. Välj kontrollen.

  3. Ändra egenskaper fönsterläge till Händelser genom att trycka på knappen händelser ( ).

  4. Leta reda på händelsen som innehåller den hanterare som du vill ta bort, till exempel Klicka på händelse:

    egenskapsfönstret i Visual Studio som visas med händelseläget aktiverat och klickhändelsen.

  5. Högerklicka på händelsen och välj Återställ.

Hantera en händelse vid körning

Du lägger vanligtvis till händelsehanterare i kontroller vid designtid via Visual Designer. Du kan dock skapa kontroller vid körning, vilket kräver att du lägger till händelsehanterare i kod. Genom att lägga till hanterare i kod kan du också lägga till flera hanterare i samma händelse.

Lägga till en hanterare

I följande exempel visas hur du skapar en kontroll och lägger till en händelsehanterare. Den här kontrollen skapas i Button.Click-händelsehanteraren för en annan knapp. När Knapp1 trycks. Koden flyttar och storleksanpassar en ny knapp. Den nya knappens Click händelse hanteras av metoden MyNewButton_Click. För att den nya knappen ska visas läggs den till i formulärets Controls samling. Det finns också kod för att ta bort hanteraren för Button1.Click händelse. Detta beskrivs i avsnittet Ta bort hanteraren.

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

Kör den här koden genom att göra följande i ett formulär med Visual Studio Visual Designer:

  1. Lägg till en ny knapp i formuläret och ge det namnet Button1.
  2. Ändra egenskaper fönsterläge till Händelser genom att trycka på händelseknappen ( ).
  3. Dubbelklicka på Klicka på-händelsen för att generera en hanterare. Den här åtgärden öppnar kodfönstret och genererar en tom Button1_Click metod.
  4. Ersätt metodkoden med föregående kod ovan.

Mer information om C#-händelser finns i Events (C#) Mer information om Visual Basic-händelser finns i Events (Visual Basic)

Ta bort hanteraren

Avsnittet Lägg till en hanterare använde viss kod för att visa hur du lägger till en hanterare. Koden innehöll också ett anrop för att ta bort en hanterare:

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

Den här syntaxen kan användas för att ta bort alla händelsehanterare från alla händelser.

Mer information om C#-händelser finns i Events (C#) Mer information om Visual Basic-händelser finns i Events (Visual Basic)

Använda flera händelser med samma hanterare

Med visualiseringsdesignerns egenskaper fönstret kan du välja samma hanterare som redan används av en annan händelse. Följ anvisningarna i avsnittet Ange hanteraren för att välja en befintlig hanterare i stället för att skapa en ny.

I C# är hanteraren kopplad till en kontrolls händelse i formulärets designerkod, som ändrades via Visual Designer. Mer information om C#-händelser finns i Händelser (C#)

Visual Basic

I Visual Basic är hanteraren kopplad till en kontrolls händelse i formulärets kod bakom-fil, där händelsehanterarkoden deklareras. Flera Handles nyckelord kan läggas till i händelsehanterarkoden för att använda den med flera händelser. Visual Designer genererar nyckelordet Handles åt dig och lägger till det i händelsehanteraren. Du kan dock enkelt göra detta själv på vilken kontrolls händelse som helst och dess händelsehanterare, så länge signaturen för hanteringsmetoden matchar händelsen. Mer information om Visual Basic-händelser finns i Events (Visual Basic)

Den här koden visar hur samma metod kan användas som hanterare för två olika Button.Click händelser:

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

Se även