با مدیریت رویداد انعطاف پذیر، تعامل رابط کاربری را به برنامه Windows Form خود اضافه کنید.
Windows Forms به شما امکان می دهد با کشیدن عناصر UI روی بوم، برنامه های دسکتاپ را به صورت بصری ایجاد کنید. این عناصر رابط کاربری شامل ویجتهایی مانند دکمهها، پانلها یا چکباکسها هستند.
هر عنصر UI رویدادهای خاصی را دریافت می کند. به عنوان مثال، می توانید یک رویداد کلیک برای دکمه ها، یک رویداد تغییر یافته برای چک باکس ها، یا یک رویداد کشیدن و رها کردن برای پانل ها داشته باشید.
رویدادها از کنترل کننده یا توابع رویداد استفاده می کنند که فقط زمانی اجرا می شوند که آن رویداد خاص رخ دهد.
انواع رویدادهای مورد استفاده برای عناصر مختلف UI
هر عنصر رابط کاربری فهرستی از رویدادها دارد. دوره های زیادی وجود دارد که می توانید در مورد تئوری ها و روش های مهم UX یا UI بیاموزید تا به شما کمک کند تصمیم بگیرید از چه عناصر UI استفاده کنید. در اینجا چند نمونه از رویدادهای استفاده شده توسط عناصر 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;
}
رویداد بازشو راهنمای راهنمای ابزار
رویداد popup tooltip زمانی اتفاق میافتد که ماوس را روی یک عنصر UI در برنامه قرار میدهید و یک راهنمای ابزار ظاهر میشود. آرگومان های ارسال شده به کنترل کننده رویداد به شما امکان می دهد به داده های مربوط به راهنمای ابزار مانند متن یا اندازه آن دسترسی داشته باشید.
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);
}
رویدادهای ماوس روی و خروج ماوس
هنگامی که ماوس روی یک عنصر UI قرار می گیرد، رویداد ماوس روی آن فعال می شود. هنگامی که ماوس خارج می شود و شناور شدن روی عنصر را متوقف می کند، رویداد خروج ماوس فعال می شود.
private void button1_MouseLeave(object sender, EventArgs e)
{
Button button = (Button)sender;
var buttonText = button.Text;
}
رویداد تغییر یافته را علامت زد
عناصر رابط کاربری که به کاربر امکان انتخاب گزینه را میدهند، میتوانند از رویداد تغییر علامتگذاری شده استفاده کنند. این شامل دکمه های رادیویی و چک باکس ها می شود. زمانی که چک باکس را علامت بزنید یا علامت آن را بردارید، عملکرد فعال می شود.
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
CheckBox checkbox = (CheckBox)sender;
CheckState state = checkbox.CheckState;
bool isChecked = checkbox.Checked;
}
رویدادهای مقدار تغییر، مقدار انتخاب شده تغییر یا تاریخ تغییر
رویداد تغییر مقدار در عناصر رابط کاربری موجود است که به شما امکان می دهد گزینه ای را برای تغییر یک مقدار انتخاب کنید. این شامل جعبه های ترکیبی، انتخابگرهای تاریخ و زمان، یا تقویم می شود. زمانی که کاربر یک مقدار جدید را انتخاب می کند، این تابع فعال می شود.
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;
}
نحوه ایجاد و استفاده از رویداد Handler
ابتدا یک برنامه Winforms Forms جدید در ویژوال استودیو ایجاد کنید. اگر در Windows Forms تازه کار هستید، برنامه های کلون زیادی وجود دارد که می توانید در حین یادگیری فرم های ویندوز ایجاد کنید.
گردانندگان رویداد روی بوم
میتوانید کنترلکنندههای رویداد را از پنجره ویژگیها در سمت راست بوم ایجاد کنید. هنگامی که یک برنامه Windows Forms جدید ایجاد کردید، یک کنترل کننده رویداد برای عنصر UI باکس ایجاد کنید. هنگامی که کاربر چک باکس را علامت میزند یا علامت آن را لغو میکند، فعال میشود.
- منوی جعبه ابزار در سمت چپ ویژوال استودیو را باز کنید. یک عنصر UI باکس را روی بوم بکشید و رها کنید.
- کادر انتخاب روی بوم را برجسته کنید.
- در پنجره خصوصیات در پانل سمت راست، روی نماد رعد و برق زرد کلیک کنید تا لیست رویدادها را مشاهده کنید. به سمت پایین به رویداد CheckedChanged بروید.
- روی فضای خالی کنار رویداد CheckedChanged کلیک کنید. این به طور خودکار یک تابع جدید برای مدیریت رویداد ایجاد می کند. این تابع در قسمت کد پشت برنامه، در فایل
.cs.private void checkBox1_CheckedChanged (فرستنده شی، EventArgs e) ایجاد می شود{ // کد شما در اینجا}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
// Your code here
}
گردانندگان رویداد با استفاده از کد پشت
یک تابع جدید در کد پشت آن ایجاد کنید و آن را به عنصر UI روی بوم پیوند دهید.
- روی بوم، روی یک عنصر UI دکمه کلیک کرده و بکشید. به طور پیش فرض، نام دکمه جدید “button1” خواهد بود.
.cs را باز کنید. اگر نام برنامه پیشفرض Windows Form “Form1” را گذاشتهاید، این نام Form1.cs خواهد بود. - در کلاس Form1 یک تابع جدید ایجاد کنید. مطمئن شوید که از ساختار کنترلکننده رویداد پیروی میکند و دارای دو پارامتر برای فرستنده و شی رویداد است.private void button1_MouseHoverEvent(فرستنده شی، EventArgs e){ // کد شما در اینجا}
- کنترل کننده رویداد را به رویداد شناور ماوس دکمه 1 پیوند دهید. می توانید این کار را در constructor.public Form1(){ InitializeComponent(); this.button1.MouseHover += button1_MouseHoverEvent;}
- همچنین، میتوانید با استفاده از پنجره خصوصیات روی بوم، تابع را به رویداد پیوند دهید. پنجره خواص را باز کنید و نام کنترل کننده رویداد خود را در قسمت MouseHover وارد کنید. این دکمه1_MouseHoverEvent خواهد بود.
private void button1_MouseHoverEvent(object sender, EventArgs e)
{
// Your code here
}
public Form1()
{
InitializeComponent();
this.button1.MouseHover += button1_MouseHoverEvent;
}
نحوه استفاده از کنترل کننده رویداد یکسان در چندین رویداد
می توانید یک تابع را به چندین رویداد پیوند دهید. در این مورد، اگر یک تابع به نام MouseEvent وجود داشت، میتوانید آن دسته رویداد را به رویداد شناور و کلیک ماوس اضافه کنید. سپس هر دو رویداد را با استفاده از یک تابع مدیریت می کند.
this.button1.MouseHover += button1_MouseEvent;
this.button1.MouseClick += button1_MouseEvent;
استفاده از رویدادها در یک برنامه فرم ویندوز
یک برنامه Windows Forms به شما امکان می دهد عناصر مختلف رابط کاربری مانند دکمه ها، پانل ها یا جعبه های متن را روی بوم بکشید و رها کنید. میتوانید بر اساس رویدادهای مختلفی که میتواند در برنامه رخ دهد، کنترلکنندههای رویداد را به این عناصر رابط کاربری اضافه کنید.
اگر در حال ساختن یک برنامه کاربردی ویندوز هستید، ممکن است بخواهید تصاویر یا تصاویر گرافیکی را نیز به عنوان بخشی از رابط کاربری خود اضافه کنید. می توانید از کلاس های C# مختلف مانند کلاس Graphic، Pen یا Color استفاده کنید که به شما امکان می دهد انواع مختلفی از اشکال را روی بوم بکشید.