Windows Forms giver dig mulighed for at oprette skrivebordsapplikationer visuelt ved at trække UI-elementer til et lærred. Disse UI-elementer omfatter widgets såsom knapper, paneler eller afkrydsningsfelter.
Hvert UI-element modtager bestemte hændelser. For eksempel kan du have en klikhændelse for knapper, en ændret hændelse for afkrydsningsfelter eller en træk og slip hændelse for paneler.
Hændelser bruger hændelseshandlere eller funktioner, som kun udføres, når den pågældende hændelse indtræffer.
Typer af hændelser, der bruges til forskellige UI-elementer
Hvert UI-element har en liste over begivenheder. Der er mange kurser, hvor du kan lære om vigtige UX- eller UI-teorier og -praksis for at hjælpe dig med at beslutte, hvilke UI-elementer du skal bruge. Her er et par eksempler på hændelser, der bruges af UI-elementer.
Tast ned, Tast op eller Tastetryk begivenheder
Brugergrænsefladeelementer, der tillader brugeren at indtaste tekst, såsom en tekstboks, kan bruge disse hændelser. Disse hændelser udløses, hver gang brugeren trykker på en tast på deres tastatur.
Disse kan være nyttige i scenarier, hvor du har søgefunktionalitet, og du skal muligvis konstant tjekke, hvad værdien af tekstboksen er.
privatugyldigtextBox1_KeyUp(objektafsender, KeyEventArgs e)
{
TextBox textbox = (TextBox) afsender;
string currentTextBoxValue = tekstboks. Tekst;
}
Indlæs begivenhed
Indlæsningshændelsen opstår, når formularen eller et UI-element gengives på skærmen. Du kan bruge denne hændelse, når du ønsker, at specifik funktionalitet skal forekomme på formularens eller kontrolelementets initialiseringsstadium.
Et scenarie, hvor dette kan være nyttigt, er, hvis du vil tilføje kontrolelementer til formularen, mens den stadig indlæses.
privatugyldigForm1_Load(objektafsender, EventArgs e)
{
Værktøjstip toolTip1 = ny Værktøjstip();
toolTip1.AutoPopDelay = 5000;
toolTip1.InitialDelay = 1000;
toolTip1.ReshowDelay = 500;
toolTip1.ShowAlways = rigtigt;
toolTip1.SetToolTip (this.button1, "Min knap 1");
toolTip1.Popup += dette.ToolTip1_Popup;
}
Værktøjstip popup-hændelsen sker, når du holder markøren over et UI-element på applikationen, og et værktøjstip vises. Argumenterne, der sendes til hændelseshandleren, giver dig adgang til data om værktøjstippet, såsom dets tekst eller størrelse.
privatugyldigVærktøjstip1_Popup(objektafsender, PopupEventArgs e)
{
Værktøjstip tooltip = (Værktøjstip) afsender;
string tooltipText = værktøjstip. GetToolTip (knap1);
var værktøjstipStørrelse = e. ToolTipSize;
}
Træk og slip begivenhed
Mange UI-elementer kan bruge træk og slip-hændelsen, inklusive panelet, knappen, billedboksen, gruppeboksen og mere. Denne hændelse udløses, når brugeren trækker en fil ind i UI-elementet.
privatugyldigpanel1_DragDrop(objektafsender, DragEventArgs e)
{
streng[] filer = (streng[])e. Data. GetData (DataFormats. FileDrop, falsk);
}
Mouse Over og Mouse Leave-begivenheder
Musen over begivenheden udløses, når musen svæver over et UI-element. Når musen forlader og holder op med at svæve over elementet, udløses mouse leave-begivenheden.
privatugyldigknap1_MouseLeave(objektafsender, EventArgs e)
{
Knap knap = (Knap) afsender;
var knapTekst = knap. Tekst;
}
Afkrydset Ændret hændelse
UI-elementer, der tillader brugeren at vælge en indstilling, kan bruge den afkrydsede ændrede hændelse. Dette inkluderer alternativknapper og afkrydsningsfelter. Funktionen udløses, når du markerer eller fjerner markeringen i afkrydsningsfeltet.
privatugyldigcheckBox1_CheckedChanged(objektafsender, EventArgs e)
{
CheckBox checkbox = (CheckBox) afsender;
CheckState tilstand = afkrydsningsfelt. CheckState;
bool isChecked = afkrydsningsfelt. Tjekket;
}
Værdi ændret, valgt værdi ændret eller dato ændret hændelser
Hændelsen værdi ændret er tilgængelig på UI-elementer, der giver dig mulighed for at vælge en mulighed for at ændre en værdi. Dette inkluderer kombinationsbokse, dato- og tidsvælgere eller kalenderen. Funktionen udløses, når brugeren vælger en ny værdi.
privatugyldigmonthCalendar1_DateChanged(objektafsender, DateRangeEventArgs e)
{
MonthCalendar kalender = (Månedskalender) afsender;
var i dag = kalender. TodayDate;
var selectedDatesStart = e. Start;
var selectedDatesEnd = e. Ende;
}
Klik på Knaphændelse
Klikhændelseshåndteringsfunktionen udløses, når du klikker på en knap.
privatugyldigknap1_Klik(objektafsender, EventArgs e)
{
Knap knap = (Knap) afsender;
string textValue = knap. Tekst;
}
Strukturen af en begivenhedshandler
Hændelseshandlere har to primære parametre: afsenderen og et hændelsesobjekt.
Afsenderen er en reference til UI-elementet eller -objektet, der har udløst hændelsen, såsom en knap, afkrydsningsfelt eller panel. For eksempel, i en afkrydsningsboks ændret begivenhed, ville afsenderen være det afkrydsningsfelt, som brugeren klikkede på.
Hændelsesparameteren indeholder et objekt, der gemmer data om hændelsen, der opstod. Dette kan omfatte X- og Y-koordinaterne for et klik på en knap eller placeringen af musen i det øjeblik, hændelsen udløses.
privatugyldigpanel1_DragDrop(objektafsender, DragEventArgs e)
{
// Få adgang til egenskaberne for det UI-element, der udløste hændelsen
Panel panel = (Panel) afsender;
panel. Aktiveret = falsk;
// Få adgang til data fra begivenheden
var eventData = e. Data;
}
Sådan opretter og bruger du hændelseshandlere
Først skal du oprette en ny Winforms Forms-applikation i Visual Studio. Hvis du er ny til Windows Forms, er der mange klone apps, du kan lave, mens du lærer Windows Forms.
Begivenhedshandlere på lærredet
Du kan generere hændelseshandlere fra egenskabsvinduet i højre side af lærredet. Når du har oprettet en ny Windows Forms-applikation, skal du oprette en hændelseshandler for afkrydsningsfeltet UI-elementet. Dette udløses, når brugeren markerer eller fjerner markeringen i afkrydsningsfeltet.
- Åbn værktøjskassemenuen til venstre for Visual Studio. Træk og slip et afkrydsningsfelt UI-element på lærredet.
- Fremhæv afkrydsningsfeltet på lærredet.
- I egenskabsvinduet i højre panel skal du klikke på det gule lynikon for at se listen over begivenheder. Rul ned til Tjekket Ændret begivenhed.
- Klik på den tomme plads ved siden af Tjekket Ændret begivenhed. Dette vil automatisk generere en ny funktion til at håndtere begivenheden. Funktionen oprettes i koden-bag-delen af applikationen, i din
.cs-fil. privatugyldigcheckBox1_CheckedChanged(objektafsender, EventArgs e)
{
// Din kode her
}
Hændelseshandlere, der bruger koden bag
Opret en ny funktion i koden bagved og link den til UI-elementet på lærredet.
- Klik og træk et knap-UI-element på lærredet. Som standard vil navnet på den nye knap være "knap1".
- Åben
.cs. Hvis du har forladt standard Windows Form applikationsnavnet "Form1", ville dette være Form1.cs. - Opret en ny funktion inde i Form1-klassen. Sørg for, at den følger strukturen af en hændelseshandler og har to parametre for afsenderen og hændelsesobjektet.
privatugyldigbutton1_MouseHoverEvent(objektafsender, EventArgs e)
{
// Din kode her
} - Link hændelseshandleren til musehovedhændelsen for knap1. Du kan gøre dette i konstruktøren.
offentlig Form1()
{
InitializeComponent();
dette.button1.MouseHover += button1_MouseHoverEvent;
} - Alternativt kan du også knytte funktionen til begivenheden ved hjælp af egenskabsvinduet på lærredet. Åbn egenskabsvinduet, og indtast navnet på din hændelseshandler i MouseHover-feltet. Dette ville være button1_MouseHoverEvent.
Sådan bruger du den samme hændelseshandler på tværs af flere hændelser
Du kan knytte den samme funktion til flere begivenheder. I dette tilfælde, hvis der var en enkelt funktion kaldet MouseEvent, kan du tilføje denne hændelseshandler til både musehoved- og museklikhændelsen. Dette vil så håndtere begge hændelser med den samme funktion.
dette.button1.MouseHover += button1_MouseEvent;
dette.button1.MouseClick += button1_MouseEvent;
Brug af hændelser i en Windows-formularapplikation
Et Windows Forms-program giver dig mulighed for at trække og slippe forskellige UI-elementer såsom knapper, paneler eller tekstbokse på et lærred. Du kan tilføje hændelseshandlere til disse UI-elementer baseret på de forskellige hændelser, der kan forekomme i applikationen.
Hvis du bygger et Windows-program, vil du måske også tilføje billeder eller grafik som en del af din brugergrænseflade. Du kan bruge forskellige C#-klasser såsom grafik-, pen- eller farveklassen, som giver dig mulighed for at tegne forskellige typer former på lærredet.