Med Windows Forms kan du skapa skrivbordsapplikationer visuellt genom att dra UI-element till en duk. Dessa UI-element inkluderar widgets som knappar, paneler eller kryssrutor.

Varje UI-element tar emot vissa händelser. Du kan till exempel ha en klickhändelse för knappar, en ändrad händelse för kryssrutor eller en dra och släpp-händelse för paneler.

Händelser använder händelsehanterare eller funktioner, som endast körs när den specifika händelsen inträffar.

Typer av händelser som används för olika UI-element

Varje UI-element har en lista över händelser. Det finns många kurser där du kan lär dig om viktiga UX- eller UI-teorier och -praxis för att hjälpa dig att bestämma vilka UI-element du ska använda. Här är några exempel på händelser som används av UI-element.

Key Down, Key Up eller Key Press Events

Användargränssnittselement som låter användaren skriva in text, till exempel en textruta, kan använda dessa händelser. Dessa händelser utlöses varje gång användaren trycker på en tangent på sitt tangentbord.

instagram viewer

Dessa kan vara användbara i scenarier där du har sökfunktionalitet, och du kan behöva hela tiden kontrollera vad värdet på textrutan är.

privattomhettextBox1_KeyUp(objektavsändare, KeyEventArgs e)
{
TextBox textbox = (TextBox) avsändare;
sträng currentTextBoxValue = textruta. Text;
}

Ladda händelse

Laddningshändelsen inträffar när formuläret eller ett UI-element renderas på skärmen. Du kan använda den här händelsen när du vill att specifik funktionalitet ska inträffa vid formulärets eller kontrollens initialiseringsstadium.

Ett scenario där detta kan vara användbart är om du programmässigt vill lägga till kontroller till formuläret medan det fortfarande laddas.

privattomhetForm1_Load(objektavsändare, EventArgs e)
{
ToolTip toolTip1 = ny ToolTip();
toolTip1.AutoPopDelay = 5000;
toolTip1.InitialDelay = 1000;
toolTip1.ReshowDelay = 500;
toolTip1.ShowAlways = Sann;
toolTip1.SetToolTip (this.button1, "Min knapp1");
toolTip1.Popup += detta.ToolTip1_Popup;
}

Verktygstips-popup-händelsen inträffar när du håller muspekaren över ett UI-element i programmet och ett verktygstips visas. Argumenten som skickas till händelsehanteraren låter dig komma åt data om verktygstipset, såsom dess text eller storlek.

privattomhetVerktygstips1_Popup(objektavsändare, PopupEventArgs e)
{
ToolTip tooltip = (ToolTip) avsändare;
sträng verktygstipsText = verktygstips. GetToolTip (knapp1);
var tooltipSize = e. ToolTipSize;
}

Dra och släpp händelse

Många UI-element kan använda dra och släpp-händelsen, inklusive panelen, knappen, bildrutan, grupprutan och mer. Den här händelsen utlöses när användaren drar en fil till UI-elementet.

privattomhetpanel1_DragDrop(objektavsändare, DragEventArgs e)
{
sträng[] filer = (sträng[])e. Data. GetData (DataFormats. FileDrop, falsk);
}

Mouse Over och Mouse Leave Events

Musen över händelsen utlöses när musen svävar över ett UI-element. När musen lämnar och slutar sväva över elementet utlöses händelsen för musen.

privattomhetbutton1_MouseLeave(objektavsändare, EventArgs e)
{
Knappknapp = (Knapp) avsändare;
var knappText = knapp. Text;
}

Markerade Ändrad händelse

UI-element som låter användaren välja ett alternativ kan använda den markerade ändrade händelsen. Detta inkluderar alternativknappar och kryssrutor. Funktionen utlöses när du markerar eller avmarkerar kryssrutan.

privattomhetcheckBox1_CheckedChanged(objektavsändare, EventArgs e)
{
CheckBox checkbox = (CheckBox) avsändare;
CheckState state = kryssruta. CheckState;
bool isChecked = kryssruta. Kontrollerade;
}

Värde ändrat, Valt värde ändrat eller Datum ändrat händelser

Händelsen värde ändrat är tillgänglig på UI-element som låter dig välja ett alternativ för att ändra ett värde. Detta inkluderar kombinationsrutor, datum- och tidsväljare eller kalendern. Funktionen utlöses när användaren väljer ett nytt värde.

privattomhetmonthCalendar1_DateChanged(objektavsändare, DateRangeEventArgs e)
{
MonthCalendar calendar = (Månadskalender) avsändare;
var idag = kalender. TodayDate;
var selectedDatesStart = e. Start;
var selectedDatesEnd = e. Slutet;
}

Klicka på Knapphändelse

Funktionen klickhändelsehanterare utlöses när du klickar på en knapp.

privattomhetknapp1_Klicka(objektavsändare, EventArgs e)
{
Knappknapp = (Knapp) avsändare;
sträng textValue = knapp. Text;
}

Strukturen för en händelsehanterare

Händelsehanterare har två primära parametrar: avsändaren och ett händelseobjekt.

Avsändaren är en referens till UI-elementet eller objektet som har utlöst händelsen, till exempel en knapp, kryssruta eller panel. Till exempel, i en kryssruta ändrad händelse, skulle avsändaren vara kryssrutan som användaren klickade på.

Händelseparametern innehåller ett objekt som lagrar data om händelsen som inträffade. Detta kan inkludera X- och Y-koordinaterna för ett knappklick eller platsen för musen i det ögonblick som händelsen utlöses.

privattomhetpanel1_DragDrop(objektavsändare, DragEventArgs e)
{
// Få åtkomst till egenskaperna för UI-elementet som utlöste händelsen
Panelpanel = (Panel) avsändare;
panel. Aktiverad = falsk;
// Få tillgång till data från händelsen
var eventData = e. Data;
}

Hur man skapar och använder händelsehanterare

Skapa först en ny Winforms Forms-applikation i Visual Studio. Om du är ny på Windows Forms finns det många klonappar du kan skapa medan du lär dig Windows Forms.

Eventhanterare på duken

Du kan generera händelsehanterare från egenskapsfönstret på höger sida av arbetsytan. När du har skapat ett nytt Windows Forms-program skapar du en händelsehanterare för kryssrutans UI-element. Detta utlöses när användaren markerar eller avmarkerar kryssrutan.

  1. Öppna verktygslådmenyn till vänster om Visual Studio. Dra och släpp ett kryssruta UI-element på arbetsytan.
  2. Markera kryssrutan på duken.
  3. I egenskapsfönstret på den högra panelen klickar du på den gula blixtikonen för att se listan över händelser. Scrolla ner till Markerad Ändrad händelse.
  4. Klicka på det tomma utrymmet bredvid Markerad Ändrad händelse. Detta kommer automatiskt att generera en ny funktion för att hantera händelsen. Funktionen skapas i koden bakom delen av applikationen, i din .cs-fil.
    privattomhetcheckBox1_CheckedChanged(objektavsändare, EventArgs e)
    {
    // Din kod här
    }

Händelsehanterare som använder koden bakom

Skapa en ny funktion i koden bakom och länka den till UI-elementet på duken.

  1. På duken klickar och drar du ett gränssnittselement. Som standard kommer namnet på den nya knappen att vara "knapp1".
  2. Öppna .cs. Om du har lämnat standardnamnet för Windows Form-applikationen "Form1", skulle detta vara det Form1.cs.
  3. Skapa en ny funktion i klassen Form1. Se till att den följer strukturen för en händelsehanterare och har två parametrar för avsändaren och händelseobjektet.
    privattomhetbutton1_MouseHoverEvent(objektavsändare, EventArgs e)
    {
    // Din kod här
    }
  4. Länka händelsehanteraren till mushändelsen för knapp1. Du kan göra detta i konstruktorn.
    offentlig Form1()
    {
    InitializeComponent();
    detta.button1.MouseHover += button1_MouseHoverEvent;
    }
  5. Alternativt kan du också länka funktionen till händelsen med hjälp av egenskapsfönstret på duken. Öppna egenskapsfönstret och ange namnet på din händelsehanterare i fältet MouseHover. Detta skulle vara button1_MouseHoverEvent.

Hur man använder samma händelsehanterare över flera händelser

Du kan länka samma funktion till flera händelser. I det här fallet, om det fanns en enda funktion som anropades MouseEvent, kan du lägga till den händelsehanteraren till både muspekaren och musklickshändelsen. Detta kommer då att hantera båda händelserna med samma funktion.

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

Använda händelser i en Windows-formulärapplikation

Ett Windows Forms-program låter dig dra och släppa olika UI-element som knappar, paneler eller textrutor på en duk. Du kan lägga till händelsehanterare till dessa UI-element, baserat på de olika händelser som kan inträffa i applikationen.

Om du bygger ett Windows-program kanske du också vill lägga till bilder eller grafik som en del av ditt användargränssnitt. Du kan använda olika C#-klasser som klassen Graphic, Pen eller Color, som gör att du kan rita olika typer av former på duken.