Ինչպես են իրադարձությունները աշխատում Windows ձևի հավելվածում


Ավելացրեք UI-ի ինտերակտիվությունը ձեր Windows Form հավելվածին՝ իրադարձությունների ճկուն մշակմամբ:

Windows Forms-ը թույլ է տալիս տեսողականորեն ստեղծել աշխատասեղանի հավելվածներ՝ UI տարրերը կտավի վրա քաշելով: Այս UI տարրերը ներառում են վիդջեթներ, ինչպիսիք են կոճակները, վահանակները կամ վանդակները:

UI-ի յուրաքանչյուր տարր ստանում է որոշակի իրադարձություններ: Օրինակ, դուք կարող եք ունենալ սեղմումների իրադարձություն կոճակների համար, փոփոխված իրադարձություն վանդակների համար կամ քաշել և թողնել իրադարձություն վահանակների համար:

Իրադարձությունները օգտագործում են իրադարձությունների մշակիչներ կամ գործառույթներ, որոնք կատարվում են միայն այն ժամանակ, երբ տեղի է ունենում տվյալ իրադարձությունը:

Միջոցառումների տեսակները, որոնք օգտագործվում են UI-ի տարբեր տարրերի համար

UI-ի յուրաքանչյուր տարր ունի իրադարձությունների ցանկ: Կան բազմաթիվ դասընթացներ, որտեղ դուք կարող եք ծանոթանալ UX-ի կամ UI-ի կարևոր տեսությունների և պրակտիկայի մասին, որոնք կօգնեն ձեզ որոշել, թե ինչ UI տարրեր օգտագործել: Ահա UI տարրերի կողմից օգտագործվող իրադարձությունների մի քանի օրինակ:

Key Down, Key Up կամ Key Press Իրադարձություններ

UI տարրերը, որոնք թույլ են տալիս օգտվողին մուտքագրել տեքստ, օրինակ՝ տեքստային տուփ, կարող են օգտագործել այս իրադարձությունները: Այս իրադարձություններն ակտիվանում են ամեն անգամ, երբ օգտատերը սեղմում է ստեղնաշարի ստեղնը:

Սրանք կարող են օգտակար լինել այն սցենարներում, որտեղ դուք ունեք որոնման գործառույթ, և ձեզ հարկավոր է անընդհատ ստուգել, թե որն է տեքստային տուփի արժեքը:

private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
    TextBox textbox = (TextBox)sender;
    string currentTextBoxValue = textbox.Text;
}

Բեռնել Իրադարձություն

Բեռնման իրադարձությունը տեղի է ունենում, երբ ձևը կամ UI տարրը ցուցադրվում է էկրանին: Դուք կարող եք օգտագործել այս իրադարձությունը, երբ ցանկանում եք, որ հատուկ ֆունկցիոնալությունը տեղի ունենա ձևի կամ հսկողության սկզբնավորման փուլում:

Սցենարներից մեկը, որտեղ սա կարող է օգտակար լինել, այն է, եթե ցանկանում եք ծրագրային կերպով կառավարիչներ ավելացնել ձևին, մինչ այն դեռ բեռնվում է:

private void Form1_Load(object sender, EventArgs e)
{
    ToolTip toolTip1 = new ToolTip();
    toolTip1.AutoPopDelay = 5000;
    toolTip1.InitialDelay = 1000;
    toolTip1.ReshowDelay = 500;
    toolTip1.ShowAlways = true;
    toolTip1.SetToolTip(this.button1, "My button1");
    toolTip1.Popup += this.ToolTip1_Popup;
}

Գործիքների հուշում թռուցիկ իրադարձություն

Tooltip թռուցիկ իրադարձությունը տեղի է ունենում, երբ սավառնում եք հավելվածի միջերեսի տարրի վրա, և հայտնվում է գործիքի հուշում: Իրադարձությունների մշակիչին փոխանցված արգումենտները թույլ են տալիս մուտք գործել գործիքի հուշման վերաբերյալ տվյալներ, օրինակ՝ դրա տեքստը կամ չափը:

private void ToolTip1_Popup(object sender, PopupEventArgs e)
{
    ToolTip tooltip = (ToolTip)sender;
    string tooltipText = tooltip.GetToolTip(button1);
    var tooltipSize = e.ToolTipSize;
}

Քաշեք և թողեք իրադարձությունը

UI-ի շատ տարրեր կարող են օգտագործել քաշել և թողնել իրադարձությունը, ներառյալ վահանակը, կոճակը, նկարի տուփը, խմբային տուփը և այլն: Այս իրադարձությունը ակտիվանում է, երբ օգտատերը ֆայլը քաշում է միջերեսի տարր:

private void panel1_DragDrop(object sender, DragEventArgs e)
{
    string[] files = (string[])e.Data.GetData(DataFormats.FileDrop, false);
}

Mouse Over and Mouse Leave Events

Իրադարձության վրա մկնիկը գործարկվում է, երբ մկնիկը սավառնում է UI տարրի վրա: Այն բանից հետո, երբ մկնիկը հեռանում է և դադարում սավառնել տարրի վրայով, գործարկվում է մկնիկի հեռանալու իրադարձությունը:

private void button1_MouseLeave(object sender, EventArgs e)
{
    Button button = (Button)sender;
    var buttonText = button.Text;
}

Նշված է «Փոփոխված իրադարձություն»:

UI տարրերը, որոնք թույլ են տալիս օգտվողին ընտրել որևէ տարբերակ, կարող են օգտագործել նշված փոփոխված իրադարձությունը: Սա ներառում է ռադիո կոճակներ և վանդակներ: Ֆունկցիան գործարկվում է, երբ դուք նշում եք կամ հանում եք վանդակը:

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    CheckBox checkbox = (CheckBox)sender;
    CheckState state = checkbox.CheckState; 
    bool isChecked = checkbox.Checked;
}

Փոփոխված արժեք, Ընտրված արժեքը փոխված կամ փոփոխված ամսաթիվ Իրադարձություններ

Արժեքը փոխված իրադարձությունը հասանելի է UI տարրերի վրա, որոնք թույլ են տալիս ընտրել արժեքը փոխելու տարբերակ: Սա ներառում է համակցված տուփեր, ամսաթիվ և ժամ ընտրողներ կամ օրացույց: Ֆունկցիան գործարկվում է, երբ օգտագործողը ընտրում է նոր արժեք:

private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
    MonthCalendar calendar = (MonthCalendar)sender;
    var today = calendar.TodayDate;
    var selectedDatesStart = e.Start;
    var selectedDatesEnd = e.End;
}

Սեղմեք կոճակը իրադարձություն

Սեղմեք իրադարձությունների մշակման գործառույթը գործարկվում է, երբ սեղմում եք կոճակը:

private void button1_Click(object sender, EventArgs e)
{
    Button button = (Button)sender;
    string textValue = button.Text;
}

Իրադարձությունների կառավարչի կառուցվածքը

Իրադարձությունների մշակիչներն ունեն երկու հիմնական պարամետր՝ ուղարկող և իրադարձության օբյեկտ:

Ուղարկողը հղում է միջերեսի տարրին կամ օբյեկտին, որը գործարկել է իրադարձությունը, օրինակ՝ կոճակը, վանդակը կամ վահանակը: Օրինակ, վանդակը փոխված իրադարձության դեպքում ուղարկողը կլինի այն վանդակը, որի վրա սեղմել է օգտատերը:

Իրադարձության պարամետրը պարունակում է օբյեկտ, որը պահում է տվյալներ տեղի ունեցած իրադարձության մասին: Սա կարող է ներառել կոճակի սեղմման X և Y կոորդինատները կամ մկնիկի գտնվելու վայրը իրադարձության գործարկման պահին:

private void panel1_DragDrop(object sender, DragEventArgs e)
{
    // Access properties of the UI element that triggered the event
    Panel panel = (Panel)sender;
    panel.Enabled = false;
    // Access data from the event
    var eventData = e.Data;
}

Ինչպես ստեղծել և օգտագործել իրադարձությունների մշակիչներ

Նախ, Visual Studio-ում ստեղծեք նոր Winforms Forms հավելված: Եթե դուք նոր եք Windows Forms-ում, կան բազմաթիվ կլոնավորման հավելվածներ, որոնք կարող եք ստեղծել Windows Forms-ը սովորելիս:

Իրադարձությունների մշակողները կտավի վրա

Դուք կարող եք ստեղծել իրադարձությունների մշակիչներ կտավի աջ կողմում գտնվող հատկությունների պատուհանից: Windows Forms-ի նոր հավելված ստեղծելուց հետո ստեղծեք իրադարձությունների մշակիչ վանդակի UI տարրի համար: Սա կգործարկվի, երբ օգտատերը ստուգի կամ չեղարկի վանդակը:

  1. Բացեք գործիքների տուփի ընտրացանկը Visual Studio-ի ձախ կողմում: Քաշեք և գցեք վանդակի UI տարրը կտավի վրա:

  2. Նշեք վանդակը կտավի վրա:
  3. Աջ կողմի վահանակի հատկությունների պատուհանում կտտացրեք դեղին կայծակի պատկերակին՝ իրադարձությունների ցանկը դիտելու համար: Ոլորեք ներքև դեպի CheckedChanged միջոցառումը:

  4. Սեղմեք CheckedChanged իրադարձության կողքին գտնվող դատարկ տարածության վրա: Սա ավտոմատ կերպով կստեղծի նոր գործառույթ՝ իրադարձությունը կարգավորելու համար: Ֆունկցիան կստեղծվի հավելվածի կոդի հետևի մասում՝ ձեր .cs ֆայլում:

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        // Your code here
    }

Իրադարձությունների կառավարիչներ, որոնք օգտագործում են հետևի ծածկագիրը

Ստեղծեք նոր գործառույթ ետևում գտնվող կոդի մեջ և այն կապեք կտավի միջերեսի տարրին:

  1. Կտավի վրա սեղմեք և քաշեք կոճակի UI տարրը: Լռելյայնորեն, նոր կոճակի անունը կլինի «button1»:
  2. Բացեք .cs: Եթե դուք թողել եք «Form1»-ի «Windows Form» հավելվածի կանխադրված անունը, ապա սա կլինի Form1.cs:
  3. Form1 դասի ներսում ստեղծեք նոր ֆունկցիա։ Համոզվեք, որ այն հետևում է իրադարձությունների մշակողի կառուցվածքին և ունի երկու պարամետր ուղարկողի և իրադարձության օբյեկտի համար:

    private void button1_MouseHoverEvent(object sender, EventArgs e)
    {
        // Your code here
    }
  4. Միացրեք իրադարձությունների մշակիչը կոճակի 1-ի մկնիկի սավառնող իրադարձությանը: Դուք կարող եք դա անել կոնստրուկտորում:

    public Form1()
    {
        InitializeComponent();
        this.button1.MouseHover += button1_MouseHoverEvent;
    }
  5. Որպես այլընտրանք, դուք կարող եք նաև կապել գործառույթը իրադարձության հետ՝ օգտագործելով կտավի վրա գտնվող հատկությունների պատուհանը: Բացեք հատկությունների պատուհանը և մուտքագրեք ձեր իրադարձությունների մշակողի անունը MouseHover դաշտում: Սա կլինի button1_MouseHoverEvent:

Ինչպես օգտագործել միևնույն իրադարձությունների մշակիչը բազմաթիվ իրադարձությունների ընթացքում

Դուք կարող եք նույն գործառույթը կապել բազմաթիվ իրադարձությունների հետ: Այս դեպքում, եթե կար մեկ գործառույթ, որը կոչվում է MouseEvent, դուք կարող եք ավելացնել այդ իրադարձությունների մշակիչը և՛ մկնիկի սավառնման, և՛ մկնիկի սեղմման իրադարձությանը: Այնուհետև սա կկառավարի երկու իրադարձությունները՝ օգտագործելով նույն գործառույթը:

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

Օգտագործելով իրադարձությունները Windows ձևի հավելվածում

Windows Forms հավելվածը թույլ է տալիս քաշել և թողնել տարբեր UI տարրեր, ինչպիսիք են կոճակները, վահանակները կամ տեքստային տուփերը կտավի վրա: Դուք կարող եք իրադարձությունների մշակիչներ ավելացնել այս UI տարրերին՝ հիմնվելով հավելվածի ներսում տեղի ունեցող տարբեր իրադարձությունների վրա:

Եթե դուք Windows-ի հավելված եք կառուցում, կարող եք նաև պատկերներ կամ գրաֆիկա ավելացնել որպես ձեր օգտատիրոջ միջերեսի մաս: Կարող եք օգտագործել տարբեր C# դասեր, ինչպիսիք են Graphic, Pen կամ Color դասերը, որոնք թույլ կտան կտավի վրա նկարել տարբեր տեսակի ձևեր: