رویدادهای فرم- بخش اول
جلسات دوره
مهدی احمدی
از سال 1380 برنامه نویسی را شروع کرده و از سال 90 در این زمینه تدریس میکنم .با زبانهای سی پلاس پلاس ، سی ،پاسکال ،VB ، سی شارپ ،اسمبلی، جاوا و .... کار کرده و آنها را تدریس کرده ام.هم اکنون نیز مشغول تدریس در دانشگاه هستم و مدتی است با سایت درسمن همکاری میکنم مشاهده رزومه
مفهوم رویداد
به هرگونه تغییرات فرم در حالت اجرا شامل تغییر اندازه، تغییر مکان، کلیک ماوس و ... روییداد گفته میشود. رویدادها را میتوان به چند دسته تقسیم کرد.
- رویدادهای مربوط به ماوس
- رویدادهای مربوط به صفحه کلید
- رویدادهای مربوط به باز و بسته شدن فرم
- رویدادهای مربوط به تغییر ویژگیهای فرم
- سایر رویدادها
رویدادهای فرم
حال در قسمت Event میتوانیم همه رویدادهای فرم را مشاهده کنیم. اگر در مقابل هریک از این رویدادها دابل کلیک کنیم برای ما متدی ایجاد میکند که این متد در اثر اتفاق افتادن آن رویداد اجرا میشود.
MouseClick
حال قصد داریم که با کلیک کردن روی فرم، فرم تغییر کند. برای این کار ابتدا در مقابل رویداد MouseClick دابل کلیک کرده تا متد را برای ما بسازد.
حال هر تغییراتی که مورد نیاز ما باشد قابل اجرا است. ما قصد تغییر رنگ فرم را داریم، برای این کار باید درون متد، این دستور را بنویسیم. شکل کلی دستور به شکل زیر است.
نام فرم . ویژگی = مقدار جدید ;
به جای نام فرم میتوان از کلمه this به معنای همین، استفاده کرد.
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
this.BackColor = Color.Red;
}
MouseDoubleClick
رویداد بعدی، رویداد MouseDoubleClick است که در هنگام دابل کلیک کردن ماوس متد خود را اجرا میکند.
private void Form1_MouseDoubleClick(object sender, MouseEventArgs e)
{
this.BackColor = Color.Red;
}
همان طور که مشاهده میکنیم درون پرانتز متد دومقدار sender و e وجود دارد که مقدار sender عنصری که رویداد بر روی آن اتفاق افتاده را مشخص میکند و مقدار e چیزی که موجب اتفاق افتان این رویداد بوده مانند کلیک چپ یا راست ماوس را مشخص میکند.
حال قصد داریم که با کلیک چپ روی فرم رنگ فرم قرمز و با کلیک راست رنگ فرم آبی شود. برای این کار درون متد MouseClick شرط قرار میدهیم که اگر e با کلیک چپ ماوس پر شده است رنگ فرم قرمز و اگر با کلیک راست ماوس پر شده رنگ فرم آبی شود.
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.BackColor = Color.Red; //قرمز
}
else
{
this.BackColor = Color.Blue; //آبی
}
}
MouseDown
هنگامی که کلید ماوس فشار داده شود رویداد MouseDown اتفاق میافتد.
MouseUp
هنگامی که کلید ماوس رها شود و بالا بیاید رویداد MouseUp اتفاق میافتد.
MouseEnter
اگر رویداد MouseEnter را برای هر عنصر فعال کنیم موجب میشود که هربار ماوس روی آن عنصر برود آن رویداد اتفاق بیافتد. حال میخاهیم زمانی که ماوس وارد فرم شد، مکان فرم به صورت تصادفی تغییر کند. ویژگی Top فاصله فرم را از بالای صفحه و ویژگی Left فاصله فرم را از سمت چپ صفحه مشخص میکند.
private void Form1_MouseEnter(object sender, EventArgs e)
{
Random r = new Random(); //تصادفی عدد
int x, y;
x = r.Next(0, 501);
y = r.Next(0, 501);
this.Top = y; //بالا از فاصله
this.Left = x; //چپ از فاصله
}
MouseLeave
اگر رویداد MouseLeave فعال باشد هر گاه ماوس عنصر را ترک کند ان رویداد اتفاق میافتد. حال میخواهیم هرگاه ماوس فرم را ترک کرد برنامه پایان یابد.
private void Form1_MouseLeave(object sender, EventArgs e)
{
Application.Exit(); //برنامه از خروج
}
MouseMove
اگر برای یک عنصر رویداد MouseMove را فعال کنیم، هنگامی که ماوس روی آن عنصر حرکت کند این رویداد اجرا میشود. حال ما قصد داریم که با حرکت ماوس روی فرم رنگ فرم به صورت تصادفی تغییر کند. متد FromArgb از کلاس Color موجب دریافت کد رنگ از ما به صورت مد AGB میشود که هر یک عددی بین 0 تا 255 هستند.
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
Random random = new Random(); //تصادفی عدد
int r, g, b;
r = random.Next(0, 256);
g = random.Next(0, 256);
b = random.Next(0, 256);
this.BackColor = Color.FromArgb(r,g,b); // رنگ تغییر
}
MouseHover
اگر رویداد MouseHover برای یک عنصر فعال باشد، هرگاه ماوس روی آن عنصر بایستد این رویداد اجرا میشود. حال ما قصد داریم که اگر ماوس روی فرم ایستاد رنگ فرم مشکی شود.
private void Form1_MouseHover(object sender, EventArgs e)
{
this.BackColor = Color.Black; //مشکی رنگ
}
Click و DoubleClick
تفاوت رویدادهای Click و DoubleClick با رویدادهای MouseClick و MouseDoubleClick این است که در رویداد های MouseClick و MouseDoubleClick تنها زمانی که ماوس روی عنصری کلیک کند متد اجرا میشود اما در رویدادهای Click و DoubleClick هر شیء ورودی که قابلیت کلیک داشته باشد روی عنصر کلیک کند متد اجرا میشود.
امید واریم که این آموزش برای شما مفید واقع شده باشد. در قسمت بعد قصد داریم که در کنار شما عزیزان با دیگر رویدادهای مهم فرم آشنا شویم. لطفاً با ما همراه باشید...
نظرات دانشجویان
سلام خسته نباشین برای اینکه باهر کلید یک رنگ متفاوت در پس زمینه اجراشه از چه کدی استفاده کنیم
سلام دوست عزیز وقتتون بخیر، در این بخش به سوالات فنی و تخصصی پاسخ داده نمی شود، میتوانید در انجمن برنامه نویسی درسمن عضو شوید و در آنجا سورس کد بزارید، دوستان و کارشناسان در اسرع وقت پاسخگو شما هستند.
یه سوال من وقتی از رویداد صفحه کلید میخواهم استفاده کنم وقتی از دکمه صفحه کلید استفاده میکنم عملیات باتن اجرا میشه ولی نمیخوام اینجوری باشه
سلام دوست عزیز وقتتون بخیر، لطفا سوال و قطعه کد خود را در انجمن برنامه نویسی درسمن بارگزاری کنید تا دوستان و کارشناسان به مشکل شما رسیدگی کنند.
نظر شما در تصمیم دیگران اثرگذار است.
لطفا برای همراهان درسمن و بهتر شدن دوره نظر خود را بنویسید.