Windows Forms lar deg lage skrivebordsapplikasjoner visuelt ved å dra UI-elementer til et lerret. Disse UI-elementene inkluderer widgets som knapper, paneler eller avmerkingsbokser.

Hvert UI-element mottar visse hendelser. Du kan for eksempel ha en klikkhendelse for knapper, en endret hendelse for avmerkingsbokser eller en dra og slipp-hendelse for paneler.

Hendelser bruker hendelsesbehandlere eller funksjoner, som bare kjøres når den spesielle hendelsen inntreffer.

Typer hendelser som brukes for forskjellige UI-elementer

Hvert UI-element har en liste over hendelser. Det er mange kurs hvor du kan lære om viktige UX- eller UI-teorier og praksiser for å hjelpe deg med å bestemme hvilke UI-elementer du skal bruke. Her er noen eksempler på hendelser som brukes av UI-elementer.

Tast ned, Tast opp eller Tastetrykk hendelser

UI-elementer som lar brukeren skrive inn tekst, for eksempel en tekstboks, kan bruke disse hendelsene. Disse hendelsene utløses hver gang brukeren trykker på en tast på tastaturet.

Disse kan være nyttige i scenarier der du har søkefunksjonalitet, og du må kanskje hele tiden sjekke hva verdien av tekstboksen er.

privattomromtextBox1_KeyUp(objektavsender, KeyEventArgs e)
{
TextBox textbox = (TextBox) avsender;
string currentTextBoxValue = tekstboks. Tekst;
}

Last inn hendelse

Lastehendelsen oppstår når skjemaet eller et UI-element gjengis på skjermen. Du kan bruke denne hendelsen når du vil at spesifikk funksjonalitet skal oppstå på skjemaets eller kontrollens initialiseringsstadium.

Et scenario der dette kan være nyttig er hvis du vil legge til kontroller i skjemaet mens det fortsatt lastes inn.

privattomromForm1_Load(objektavsender, EventArgs e)
{
ToolTip toolTip1 = ny Verktøytips();
toolTip1.AutoPopDelay = 5000;
toolTip1.InitialDelay = 1000;
toolTip1.ReshowDelay = 500;
toolTip1.ShowAlways = ekte;
toolTip1.SetToolTip (this.button1, "Min knapp1");
toolTip1.Popup += dette.ToolTip1_Popup;
}

Verktøytips-popup-hendelsen skjer når du holder markøren over et UI-element i applikasjonen, og et verktøytips vises. Argumentene som sendes inn i hendelsesbehandleren lar deg få tilgang til data om verktøytipset, for eksempel tekst eller størrelse.

privattomromVerktøytips1_Popup(objektavsender, PopupEventArgs e)
{
Verktøytips tooltip = (Verktøytips) avsender;
string tooltipText = verktøytips. GetToolTip (knapp1);
var tooltipSize = e. ToolTipSize;
}

Dra og slipp hendelse

Mange brukergrensesnittelementer kan bruke dra og slipp-hendelsen, inkludert panelet, knappen, bildeboksen, gruppeboksen og mer. Denne hendelsen utløses når brukeren drar en fil inn i UI-elementet.

privattomrompanel1_DragDrop(objektavsender, DragEventArgs e)
{
streng[] filer = (streng[])e. Data. GetData (DataFormats. FileDrop, falsk);
}

Mouse Over og Mouse Leave Events

Musen over hendelsen utløses når musen svever over et UI-element. Når musen forlater og slutter å sveve over elementet, utløses mouse leave-hendelsen.

privattomrombutton1_MouseLeave(objektavsender, EventArgs e)
{
Knappknapp = (Knapp) avsender;
var knappTekst = knapp. Tekst;
}

Krysset av for endret hendelse

UI-elementer som lar brukeren velge et alternativ kan bruke den avkryssede endrede hendelsen. Dette inkluderer alternativknapper og avmerkingsbokser. Funksjonen utløses når du merker av eller fjerner merket.

privattomromcheckBox1_CheckedChanged(objektavsender, EventArgs e)
{
CheckBox checkbox = (CheckBox) avsender;
CheckState state = avkrysningsboks. SjekkState;
bool isChecked = avkrysningsboks. Sjekket;
}

Verdi endret, valgt verdi endret eller dato endret hendelser

Verdi endret-hendelsen er tilgjengelig på UI-elementer som lar deg velge et alternativ for å endre en verdi. Dette inkluderer kombinasjonsbokser, dato- og klokkeslettvelgere eller kalenderen. Funksjonen utløses når brukeren velger en ny verdi.

privattomrommonthCalendar1_DateChanged(objektavsender, DateRangeEventArgs e)
{
MonthCalendar kalender = (Månedskalender) avsender;
var i dag = kalender. TodayDate;
var selectedDatesStart = e. Start;
var selectedDatesEnd = e. Slutt;
}

Klikk på Button Event

Klikk hendelsesbehandler-funksjonen utløses når du klikker på en knapp.

privattomromknapp1_Klikk(objektavsender, EventArgs e)
{
Knappknapp = (Knapp) avsender;
string textValue = knapp. Tekst;
}

Strukturen til en hendelsesbehandler

Hendelsesbehandlere har to primære parametere: avsender og et hendelsesobjekt.

Avsenderen er en referanse til UI-elementet eller -objektet som har utløst hendelsen, for eksempel en knapp, avkrysningsboks eller panel. For eksempel, i en avmerkingsboks endret hendelse, vil avsenderen være avkrysningsboksen som brukeren klikket på.

Hendelsesparameteren inneholder et objekt som lagrer data om hendelsen som skjedde. Dette kan inkludere X- og Y-koordinatene for et knappeklikk, eller plasseringen av musen i det øyeblikket hendelsen utløses.

privattomrompanel1_DragDrop(objektavsender, DragEventArgs e)
{
// Få tilgang til egenskapene til UI-elementet som utløste hendelsen
Panel panel = (Panel) sender;
panel. Aktivert = falsk;
// Få tilgang til data fra arrangementet
var eventData = e. Data;
}

Hvordan lage og bruke hendelsesbehandlere

Først oppretter du en ny Winforms Forms-applikasjon i Visual Studio. Hvis du er ny til Windows Forms, er det mange klone apper du kan lage mens du lærer Windows Forms.

Hendelseshåndtere på lerretet

Du kan generere hendelsesbehandlere fra egenskapsvinduet på høyre side av lerretet. Når du har opprettet en ny Windows Forms-applikasjon, oppretter du en hendelsesbehandler for avmerkingsboksen UI-elementet. Dette utløses når brukeren merker av eller fjerner merket for avmerkingsboksen.

  1. Åpne verktøykassemenyen til venstre for Visual Studio. Dra og slipp et avmerkingsboks-UI-element på lerretet.
  2. Merk avmerkingsboksen på lerretet.
  3. I egenskapsvinduet på høyre panel klikker du på det gule lynikonet for å se listen over hendelser. Rull ned til Sjekket Endret begivenhet.
  4. Klikk på den tomme plassen ved siden av Sjekket Endret begivenhet. Dette vil automatisk generere en ny funksjon for å håndtere hendelsen. Funksjonen opprettes i koden bak delen av applikasjonen, i din .cs-fil.
    privattomromcheckBox1_CheckedChanged(objektavsender, EventArgs e)
    {
    // Koden din her
    }

Hendelsesbehandlere som bruker koden bak

Lag en ny funksjon i koden bak og koble den til UI-elementet på lerretet.

  1. Klikk og dra et UI-element på lerretet. Som standard vil navnet på den nye knappen være "knapp1".
  2. Åpen .cs. Hvis du har forlatt standard Windows Form-applikasjonsnavnet "Form1", vil dette være Form1.cs.
  3. Opprett en ny funksjon inne i Form1-klassen. Sørg for at den følger strukturen til en hendelsesbehandler, og har to parametere for avsender og hendelsesobjekt.
    privattomrombutton1_MouseHoverEvent(objektavsender, EventArgs e)
    {
    // Koden din her
    }
  4. Koble hendelsesbehandleren til hendelsen for musepeker for knapp1. Du kan gjøre dette i konstruktøren.
    offentlig Form1()
    {
    InitializeComponent();
    dette.button1.MouseHover += button1_MouseHoverEvent;
    }
  5. Alternativt kan du også knytte funksjonen til arrangementet ved å bruke egenskapsvinduet på lerretet. Åpne egenskapsvinduet, og skriv inn navnet på hendelsesbehandleren i MouseHover-feltet. Dette ville være button1_MouseHoverEvent.

Slik bruker du samme hendelsesbehandler på tvers av flere hendelser

Du kan koble samme funksjon til flere hendelser. I dette tilfellet, hvis det var en enkelt funksjon kalt MouseEvent, kan du legge til hendelsesbehandleren til både musepeker- og museklikk-hendelsen. Dette vil da håndtere begge hendelsene med samme funksjon.

dette.button1.MouseHover += button1_MouseEvent;
dette.button1.MouseClick += button1_MouseEvent;

Bruke hendelser i en Windows-skjemaapplikasjon

Et Windows Forms-program lar deg dra og slippe ulike brukergrensesnittelementer som knapper, paneler eller tekstbokser på et lerret. Du kan legge til hendelsesbehandlere til disse UI-elementene, basert på de forskjellige hendelsene som kan oppstå i applikasjonen.

Hvis du bygger en Windows-applikasjon, vil du kanskje også legge til bilder eller grafikk som en del av brukergrensesnittet. Du kan bruke forskjellige C#-klasser som grafikk-, penn- eller fargeklassen, som lar deg tegne forskjellige typer former på lerretet.