Для взаємодії з користувачем в Windows Forms використовується механізм подій. Події в Windows Forms представляють стандартні події на C #, тільки що застосовуються до візуальним компонентам і підкоряються тим же правилам, що події в C #. Але створення обробників подій в Windows Forms все ж має деякі особливості.
Перш за все в WinForms є певний стандартний набір подій, який здебільшого є у всіх візуальних компонентів. Окремі елементи додають свої події, але принципи роботи з ними будуть схожі. Щоб подивитися всі події елемента, нам треба вибрати цей елемент в поле графічного дизайнера і перейти до вкладки подій на панелі форм. Наприклад, події форми:
Щоб додати оброблювач, можна просто два рази натиснути по порожньому полю поруч з назвою події, і після цього Visual Studio автоматично згенерує обробник події. Наприклад, натиснемо для створення обробника для події Load:
І в цьому полі відобразиться назва методу обробника події Load. За замовчуванням він називається Form1_Load.Якщо ми перейдемо в файл коду форми Form1.cs, то побачимо автозгенерованний метод Form1_Load:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
І при кожному завантаженні форми буде спрацьовувати код в обробнику Form1_Load. Як правило, більшість обробників різних візуальних компонентів мають два параметри: sender - об'єкт, який ініціював подія, і аргумент, який зберігає інформацію про подію (в даному випадку EventArgs e). Але це тільки обробник. Додавання ж обробника, створеного таким чином, проводиться в файлі Form1.Designer.cs:
namespace HelloApp
{
partial class Form1
{
private System.ComponentModel.IContainer components = null;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.SuspendLayout();
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(284, 261);
this.Name = "Form1";
// додавання обробника
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
}
}
Для додавання обробника використовується стандартний синтаксис C #: this.Load + = new System.EventHandler (this.Form1_Load). Тому якщо ми захочемо видалити створений подібним чином оброблювач, то нам треба не тільки видалити метод з коду форми в Form1.cs, але і видалити додавання обробника в цьому файлі. Однак ми можемо додавати обробники подій і програмно, наприклад, в конструкторі форми:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace HelloApp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Load += LoadEvent;
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void LoadEvent(object sender, EventArgs e)
{
this.BackColor = Color.Yellow;
}
}
}
Крім раніше створеного обробника Form1_Load тут також доданий інший обробник завантаження форми: this.Load + = LoadEvent ;, який встановлює в якості фону жовтий колір. Крім раніше створеного обробника Form1_Load тут також доданий інший обробник завантаження форми: this.Load + = LoadEvent ;, який встановлює в якості фону жовтий колір.