Events — kod som körs vid händelser

I ett konsolprogram körs koden uppifrån och ned. I WinForms körs kod som svar på händelser — events.

private void btnSpara_Click(object sender, EventArgs e)
{
lblStatus.Text = "Sparat!";
}

Du skapar ett event-handler genom att dubbelklicka på en kontroll i designern. VS skapar metoden och kopplar den automatiskt.

Form-events — formulärets livscykel

EventNär körs det?
LoadNär formuläret öppnas — perfekt för att ladda data
ShownEfter att formuläret visats för första gången
ResizeVarje gång fönstret ändrar storlek
FormClosingPrecis innan formuläret stängs — bra för att spara
FormClosedEfter att formuläret stängts
private void Form1_Load(object sender, EventArgs e)
{
// Körs när appen startar
cboLand.Items.AddRange(new[] { "Sverige", "Norge", "Danmark" });
cboLand.SelectedIndex = 0;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
var svar = MessageBox.Show("Spara innan du stänger?", "Spara",
MessageBoxButtons.YesNo);
if (svar == DialogResult.Yes)
Spara();
}

Kontroll-events — vanligast

EventKontrollNär
ClickButton, Label, PictureBoxKlick
TextChangedTextBoxVarje gång texten ändras
CheckedChangedCheckBox, RadioButtonKryssrutan ändras
SelectedIndexChangedComboBox, ListBoxAnnat val görs
KeyDown / KeyUpTextBox, FormTangent trycks/släpps
MouseEnter / MouseLeaveAllaMusen rör sig in/ut
private void txtSök_TextChanged(object sender, EventArgs e)
{
string sök = txtSök.Text.ToLower();
lstResultat.Items.Clear();
foreach (var namn in alleNamn)
if (namn.ToLower().Contains(sök))
lstResultat.Items.Add(namn);
}

Notera parallellen till webben: samma idé som @onclick och TextChanged i Blazor — kod som körs som reaktion på en händelse, inte i en fast ordning uppifrån och ner.