Windows Forms võimaldab teil luua töölauarakendusi visuaalselt, lohistades kasutajaliidese elemente lõuendile. Need kasutajaliidese elemendid hõlmavad vidinaid, nagu nupud, paneelid või märkeruudud.

Iga kasutajaliidese element võtab vastu teatud sündmused. Näiteks võib teil olla nuppude klõpsamise sündmus, märkeruutude jaoks muudetud sündmus või paneelide pukseerimise sündmus.

Sündmused kasutavad sündmuste käitlejaid või funktsioone, mis käivituvad ainult siis, kui konkreetne sündmus toimub.

Erinevate kasutajaliidese elementide jaoks kasutatavate sündmuste tüübid

Igal kasutajaliidese elemendil on sündmuste loend. Seal on palju kursusi, kus saate õppida tundma olulisi UX või UI teooriaid ja praktikaid et aidata teil otsustada, milliseid kasutajaliidese elemente kasutada. Siin on mõned näited sündmustest, mida kasutajaliidese elemendid kasutavad.

Klahvi alla, klahvi üles või klahvivajutuse sündmused

Kasutajaliidese elemendid, mis võimaldavad kasutajal teksti sisestada (nt tekstikast), saavad neid sündmusi kasutada. Need sündmused käivituvad iga kord, kui kasutaja vajutab klaviatuuri klahvi.

Need võivad olla kasulikud stsenaariumide korral, kus teil on otsingufunktsioon ja teil võib tekkida vajadus pidevalt kontrollida tekstikasti väärtust.

privaatnetühinetextBox1_KeyUp(objekti saatja, KeyEventArgs e)
{
TextBox textbox = (Tekstikasti) saatja;
string currentTextBoxValue = tekstikast. Tekst;
}

Laadi sündmus

Laadimissündmus toimub siis, kui vorm või kasutajaliidese element renderdatakse ekraanil. Seda sündmust saate kasutada siis, kui soovite, et vormi või juhtelemendi initsialiseerimisetapis ilmuks teatud funktsionaalsus.

Üks stsenaarium, kus see võib olla kasulik, on see, kui soovite programmiliselt lisada vormile juhtelemente selle laadimise ajal.

privaatnetühineVorm1_Load(objekti saatja, EventArgs e)
{
ToolTip toolTip1 = uus Tööriistavihje();
toolTip1.AutoPopDelay = 5000;
toolTip1.InitialDelay = 1000;
toolTip1.ReshowDelay = 500;
toolTip1.ShowAlways = tõsi;
toolTip1.SetToolTip (this.button1, "Minu nupp1");
toolTip1.Hüpik += see.ToolTip1_Hüpik;
}

Tööriistavihje hüpikakna sündmus toimub siis, kui hõljutate kursorit rakenduse kasutajaliidese elemendi kohal ja kuvatakse kohtspikker. Sündmuste töötlejasse edastatud argumendid võimaldavad teil pääseda juurde kohtspikri andmetele, nagu selle tekst või suurus.

privaatnetühineTööriistavihje1_Hüpik(objekti saatja, PopupEventArgs e)
{
ToolTip tooltip = (ToolTip) saatja;
string tooltipText = tööriistavihje. GetToolTip (nupp1);
var tooltipSize = e. ToolTipSize;
}

Pukseeri sündmus

Paljud kasutajaliidese elemendid, sealhulgas paneel, nupp, pildikast, rühmakast ja palju muud, saavad kasutada pukseerimise sündmust. See sündmus käivitatakse, kui kasutaja lohistab faili kasutajaliidese elementi.

privaatnetühinepaneel1_DragDrop(objekti saatja, DragEventArgs e)
{
string[] failid = (string[])e. Andmed. GetData (DataFormats. FileDrop, vale);
}

Kursor üle ja hiirega lahkumine sündmused

Hiire sündmuse kohal käivitub, kui hiir liigub kasutajaliidese elemendi kohal. Kui hiir lahkub ja lõpetab elemendi kohal hõljumise, käivitub hiire lahkumise sündmus.

privaatnetühinenupp1_MouseLeave(objekti saatja, EventArgs e)
{
Nupu nupp = (Nupu) saatja;
var nuppTekst = nupp. Tekst;
}

Muudetud sündmus on märgitud

Kasutajaliidese elemendid, mis võimaldavad kasutajal suvandit valida, saavad kasutada märgitud muudetud sündmust. See hõlmab raadionuppe ja märkeruutusid. Funktsioon käivitub, kui märgite märkeruudu või tühjendate selle.

privaatnetühinecheckbox1_CheckedChanged(objekti saatja, EventArgs e)
{
Märkeruut = (CheckBox) saatja;
CheckState state = märkeruut. CheckState;
bool isChecked = märkeruut. Kontrollitud;
}

Väärtus muudetud, valitud väärtus muudetud või kuupäev muudetud sündmused

Väärtuse muutmise sündmus on saadaval kasutajaliidese elementide puhul, mis võimaldavad teil valida väärtuse muutmise valiku. See hõlmab liitkaste, kuupäeva ja kellaaja valijaid või kalendrit. Funktsioon käivitub, kui kasutaja valib uue väärtuse.

privaatnetühinemonthCalendar1_DateChanged(objekti saatja, DateRangeEventArgs e)
{
MonthCalendar kalender = (MonthCalendar) saatja;
var täna = kalender. TänaKuupäev;
var valitudDatesStart = e. Start;
var valitudKuupäevadLõpp = e. Lõpp;
}

Klõpsake nuppu Sündmus

Klõpsusündmuste töötleja funktsioon käivitub, kui klõpsate nupul.

privaatnetühinenupp1_Klõpsake(objekti saatja, EventArgs e)
{
Nupu nupp = (Nupu) saatja;
string textValue = nupp. Tekst;
}

Sündmuste halduri struktuur

Sündmuste töötlejatel on kaks peamist parameetrit: saatja ja sündmuseobjekt.

Saatja on viide kasutajaliidese elemendile või objektile, mis sündmuse käivitas, näiteks nupp, märkeruut või paneel. Näiteks märkeruudu muudetud sündmuse puhul oleks saatja märkeruut, millel kasutaja klõpsas.

Sündmuse parameeter sisaldab objekti, mis salvestab andmed toimunud sündmuse kohta. See võib hõlmata nupuvajutuse X- ja Y-koordinaate või hiire asukohta sündmuse käivitamise hetkel.

privaatnetühinepaneel1_DragDrop(objekti saatja, DragEventArgs e)
{
// Juurdepääs sündmuse käivitanud kasutajaliidese elemendi atribuutidele
Paneelpaneel = (Paneel) saatja;
paneel. Lubatud = vale;
// Juurdepääs sündmuse andmetele
var sündmuseandmed = e. Andmed;
}

Kuidas luua ja kasutada sündmuste käitlejaid

Esiteks looge uus Rakendus Winforms Forms Visual Studios. Kui olete Windows Formsis uus, on neid palju kloonige rakendusi, mida saate Windowsi vormide õppimise ajal teha.

Sündmuste juhid lõuendil

Sündmuste töötlejaid saate genereerida lõuendi paremas servas asuvas atribuutide aknas. Kui olete loonud uue Windows Formsi rakenduse, looge märkeruudu kasutajaliidese elemendi jaoks sündmuste töötleja. See käivitub, kui kasutaja märgib märkeruudu või tühistab selle.

  1. Avage Visual Studio vasakul olev tööriistakasti menüü. Lohistage märkeruudu kasutajaliidese element lõuendile.
  2. Tõstke lõuendil esile märkeruut.
  3. Sündmuste loendi kuvamiseks klõpsake parempoolsel paneelil asuvas atribuutide aknas kollast välgu ikooni. Kerige alla jaotiseni KontrollitudMuudetud sündmus.
  4. Klõpsake tühja ruumi kõrval KontrollitudMuudetud sündmus. See loob sündmuse käsitlemiseks automaatselt uue funktsiooni. Funktsioon luuakse teie rakenduse koodi taga olevas osas .cs-fail.
    privaatnetühinecheckbox1_CheckedChanged(objekti saatja, EventArgs e)
    {
    // Sinu kood siin
    }

Sündmuste töötlejad, kes kasutavad taga olevat koodi

Looge taga olevas koodis uus funktsioon ja linkige see lõuendil oleva kasutajaliidese elemendiga.

  1. Klõpsake lõuendil nuppu ja lohistage kasutajaliidese elementi. Vaikimisi on uue nupu nimi "nupp1".
  2. Avatud .cs. Kui olete jätnud Windowsi vormi rakenduse vaikenimeks "Form1", oleks see nii Vorm1.cs.
  3. Looge klassis Form1 uus funktsioon. Veenduge, et see järgiks sündmuste käitleja struktuuri ja sellel oleks kaks saatja ja sündmuseobjekti parameetrit.
    privaatnetühinebutton1_MouseHoverEvent(objekti saatja, EventArgs e)
    {
    // Sinu kood siin
    }
  4. Linkige sündmuste töötleja nupu 1 hiirekursori sündmusega. Seda saate teha konstruktoris.
    avalik Vorm1()
    {
    InitializeComponent();
    see.button1.MouseHover += button1_MouseHoverEvent;
    }
  5. Teise võimalusena saate funktsiooni sündmusega linkida, kasutades lõuendil asuvat atribuutide akent. Avage atribuutide aken ja sisestage oma sündmuste käitleja nimi väljale MouseHover. See oleks button1_MouseHoverEvent.

Kuidas kasutada sama sündmuste käitlejat mitme sündmuse puhul

Saate linkida sama funktsiooni mitme sündmusega. Sel juhul, kui kutsutakse üksainus funktsioon MouseEvent, saate selle sündmusekäsitleja lisada nii hiirekursori kui ka hiireklõpsu sündmusele. Seejärel käsitleb see mõlemat sündmust sama funktsiooni abil.

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

Sündmuste kasutamine Windowsi vormirakenduses

Windows Formsi rakendus võimaldab teil erinevaid kasutajaliidese elemente (nt nuppe, paneele või tekstikaste) lõuendile pukseerida. Nendele kasutajaliidese elementidele saate lisada sündmuste töötlejaid, mis põhinevad erinevatel rakenduses esineda võivatel sündmustel.

Kui loote Windowsi rakendust, võite soovida lisada kasutajaliidese osana pilte või graafikat. Saate kasutada erinevaid C# klasse, näiteks klassi Graphic, Pen või Color, mis võimaldab teil joonistada lõuendile erinevat tüüpi kujundeid.