Zpracování řídicí události (model Windows Forms .NET)
Události ovládacích prvků (a formulářů) jsou obecně nastaveny prostřednictvím visual studio visual designeru pro model Windows Forms. Nastavení události prostřednictvím vizuálního návrháře se označuje jako zpracování události v době návrhu. Události můžete také zpracovávat dynamicky v kódu, označované jako zpracování událostí za běhu. Událost vytvořená za běhu umožňuje dynamicky připojit obslužné rutiny událostí na základě toho, co vaše aplikace právě dělá.
Zpracování události – návrhář
V sadě Visual Studio můžete pomocí vizuálního návrháře spravovat obslužné rutiny pro události ovládacích prvků. Vizuální návrhář vygeneruje kód obslužné rutiny a přidá ho do události za vás.
Nastavení obslužné rutiny
Pomocí podokna Vlastnosti přidejte nebo nastavte obslužnou rutinu události:
Otevřete vizuální návrhář formuláře obsahujícího ovládací prvek, který chcete změnit.
Vyberte ovládací prvek.
Změňte režim podokna Vlastnosti na Události stisknutím tlačítka události ( ).
Vyhledejte událost, do které chcete přidat obslužnou rutinu , například do události Click :
Proveďte některou z následujících akcí:
Poklikáním na událost vygenerujte novou obslužnou rutinu, pokud není přiřazena žádná obslužná rutina. Pokud není prázdná, tato akce otevře kód formuláře a přejde na existující obslužnou rutinu.
Pomocí pole pro výběr ( ) zvolte existující obslužnou rutinu.
Pole pro výběr zobrazí seznam všech metod, které mají kompatibilní podpis metody pro obslužnou rutinu události.
Vymazání obslužné rutiny
Pokud chcete odebrat obslužnou rutinu události, nemůžete odstranit jenom kód obslužné rutiny, který je v souboru kódu formuláře, na který se stále odkazuje událost. Pomocí podokna Vlastnosti odeberte obslužnou rutinu události:
Otevřete vizuální návrhář formuláře obsahujícího ovládací prvek, který chcete změnit.
Vyberte ovládací prvek.
Změňte režim podokna Vlastnosti na Události stisknutím tlačítka události ( ).
Vyhledejte událost obsahující obslužnou rutinu, kterou chcete odebrat, například událost Click :
Klikněte pravým tlačítkem myši na událost a zvolte Obnovit.
Zpracování události – kód
Obslužné rutiny událostí obvykle přidáváte do ovládacích prvků v době návrhu prostřednictvím vizuálního návrháře. Můžete ale vytvořit ovládací prvky za běhu, které vyžadují, abyste do kódu přidali obslužné rutiny událostí. Přidání obslužných rutin v kódu také umožňuje přidat do stejné události více obslužných rutin.
Přidání obslužné rutiny
Následující příklad ukazuje, jak vytvořit ovládací prvek a přidat obslužnou rutinu události. Tento ovládací prvek je vytvořen v obslužné rutině Button.Click
události jiné tlačítko. Když je tlačítko1 stisknuto. Kód přesune a zdůstí nové tlačítko. Událost nového tlačítka Click
je zpracována metodou MyNewButton_Click
. Aby se nové tlačítko zobrazilo, přidá se do kolekce formuláře Controls
. Existuje také kód pro odebrání Button1.Click
obslužné rutiny události, který je popsán v části Odebrat obslužnou rutinu .
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
Chcete-li spustit tento kód, proveďte následující kroky ve formuláři pomocí Visual Studio Visual Designeru:
- Přidejte do formuláře nové tlačítko a pojmenujte ho Button1.
- Režim podokna Vlastnosti změňte na Události stisknutím tlačítka události ( ).
- Poklikáním na událost Click vygenerujte obslužnou rutinu. Tato akce otevře okno kódu a vygeneruje prázdnou
Button1_Click
metodu. - Nahraďte kód metody předchozím kódem výše.
Další informace o událostech jazyka C# naleznete v tématu Události (C#) Další informace o událostech jazyka Visual Basic naleznete v tématu Události (Visual Basic)
Odebrání obslužné rutiny
Část Přidat obslužnou rutinu použila kód k předvedení přidání obslužné rutiny. Tento kód obsahoval také volání pro odebrání obslužné rutiny:
button1.Click -= button1_Click;
RemoveHandler Button1.Click, AddressOf Button1_Click
Tuto syntaxi lze použít k odebrání jakékoli obslužné rutiny události z jakékoli události.
Další informace o událostech jazyka C# naleznete v tématu Události (C#) Další informace o událostech jazyka Visual Basic naleznete v tématu Události (Visual Basic)
Jak používat více událostí se stejnou obslužnou rutinou
V podokně Vlastnosti vizuálního návrháře sady Visual Studio můžete vybrat stejnou obslužnou rutinu, kterou už používá jiná událost. Pokud chcete místo vytvoření nové obslužné rutiny vybrat existující obslužnou rutinu, postupujte podle pokynů v části Nastavit obslužnou rutinu .
V jazyce C# je obslužná rutina připojena k události ovládacího prvku v kódu návrháře formuláře, který se změnil prostřednictvím vizuálního návrháře. Další informace o událostech jazyka C# najdete v tématu Události (C#)
Visual Basic
V jazyce Visual Basic je obslužná rutina připojena k události ovládacího prvku v souboru kódu formuláře, kde je deklarován kód obslužné rutiny události. Do kódu obslužné rutiny události lze přidat více Handles
klíčových slov, která se mají použít s více událostmi. Vizuální návrhář vygeneruje Handles
klíčové slovo za vás a přidá ho do obslužné rutiny události. Můžete to ale snadno udělat sami pro jakoukoli obslužnou rutinu události ovládacího prvku a obslužnou rutinu události, pokud podpis metody obslužné rutiny odpovídá události. Další informace o událostech jazyka Visual Basic naleznete v tématu Události (Visual Basic)
Tento kód ukazuje, jak lze stejnou metodu použít jako obslužnou rutinu pro dvě různé Button.Click
události:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click
'Do some work to handle the events
End Sub
Viz také
.NET Desktop feedback