۱۱-۶-۱۳۸۷, ۰۸:۵۷ صبح
Mouse Event Handling:
با سلام . امروز می خوام در موردرویدادهای مختلف مربوط به موس در برنامه های ویندوزی و نحوه هندل کردن اونها رو توضیح بدم .رویدادهای که در اثر تعامل کاربر با موس هر یک در شرایط خاصی اتفاق می افتند . رویدادهای موس برای هر کنترل ویندوزی که از کلاس system.windows.form.control مشتق می شوند قابل کنترل هست .توی پستهای قبلی خودم در مورد delegate ها صحبت کرده ام . delegate اي که برای هندل کردن رویدادهای موس در نظر گرفته شده یک پارامتر ورودی از نوع MouseEventArgs رو دریافت می کنه که اطلاعات مهمی رو درباره رویداد اتفاق افتاده به اون تابع منتقل میکنه .این کلاس اطلاعاتی از قبیل محتصات افقی و عمودی موس در هنگام رخداد دادن رویداد و این که چه کلیدی از موس فشار داده شده است رو به همراه خودش داره .رویدادهایی که برای موس وجود دارد رو در ادامه با هم بررسی می کنیم و در پایان با یک مثال بحث رو کامل می کنیم .
MouseEnter وقتي این رویداد اتفاق می افته که وارد مخدوده مربوط به یک کنترل بشه . مثلا اگه این رویداد رو برای یک فرم بخواهیم هندل کنیم ، به محض این که موس وارد فرم شود این رویداد اتفاق می افتد .
MouseLeave وقتي اتفاق می افته ه موس محدوده مربوط به یک کنترل رو ترک کنه ، مثلا در مثال فرم وقتی که موس فرم رو ترک کنه .
MouseDown وقتی که یکی از کلیدهای موس در مخدوده کنترل مورد نظر فشار دهده بشه .
MouseHover وقتي که موس روی یک کنترل برود این رویداد اتفاق می افتد
MouseMove وقتی که موس روی محدوده یک کنترل حرکت کند این رویداد اتفاق می افته .مثلا موس رو سطح فرم به حرکت در بیاریم .
MouseUp وقتی این رویداد اتفاق می اقته که در مخدوده کنترل مورد نظرمون باشیم و کلیدی از موس که فشار داده شده است رو رها کنیم .
در ادامه یک مثال کامل براتون میزارم که در اون روی سطح یک فرم ویندوزی با موس می تونید نقاشی بکشید و اگه به مثال کامل دقت کنید می تونید رویدادهای استقاده شده برای موس رو کامل باهاش آشنا بشید .
در این مثال یک متغیر بولین به نام shoulpaint در نظر گرفتیم که هر وقت کلید موس فشار داده بشه trueمیشه و در غیر این صورت false ميشهزما می خواهیم وقتی که روی محدوده فرم موس را حرکت می دهیم و کلیدی از موس رو پایین نگه داشتیم روی موس بتونیم نقاشی کنیم به همین دلیل در رویداد Mouse_Move چک می کنیم که اگر کلیدی ازموس فشار داده شده است می تونیم روی فرمی چیزی رسم کنیم . برای این کار از کلاس Graphics و توابع اون استفاده شده که این جا جای بحث در مورود اونها نیستش چون که خودش مبحث بسیار کاملیه که به امید خدا به موقع دو مورد اونها هم مطلب میزارم .
با سلام . امروز می خوام در موردرویدادهای مختلف مربوط به موس در برنامه های ویندوزی و نحوه هندل کردن اونها رو توضیح بدم .رویدادهای که در اثر تعامل کاربر با موس هر یک در شرایط خاصی اتفاق می افتند . رویدادهای موس برای هر کنترل ویندوزی که از کلاس system.windows.form.control مشتق می شوند قابل کنترل هست .توی پستهای قبلی خودم در مورد delegate ها صحبت کرده ام . delegate اي که برای هندل کردن رویدادهای موس در نظر گرفته شده یک پارامتر ورودی از نوع MouseEventArgs رو دریافت می کنه که اطلاعات مهمی رو درباره رویداد اتفاق افتاده به اون تابع منتقل میکنه .این کلاس اطلاعاتی از قبیل محتصات افقی و عمودی موس در هنگام رخداد دادن رویداد و این که چه کلیدی از موس فشار داده شده است رو به همراه خودش داره .رویدادهایی که برای موس وجود دارد رو در ادامه با هم بررسی می کنیم و در پایان با یک مثال بحث رو کامل می کنیم .
MouseEnter وقتي این رویداد اتفاق می افته که وارد مخدوده مربوط به یک کنترل بشه . مثلا اگه این رویداد رو برای یک فرم بخواهیم هندل کنیم ، به محض این که موس وارد فرم شود این رویداد اتفاق می افتد .
MouseLeave وقتي اتفاق می افته ه موس محدوده مربوط به یک کنترل رو ترک کنه ، مثلا در مثال فرم وقتی که موس فرم رو ترک کنه .
MouseDown وقتی که یکی از کلیدهای موس در مخدوده کنترل مورد نظر فشار دهده بشه .
MouseHover وقتي که موس روی یک کنترل برود این رویداد اتفاق می افتد
MouseMove وقتی که موس روی محدوده یک کنترل حرکت کند این رویداد اتفاق می افته .مثلا موس رو سطح فرم به حرکت در بیاریم .
MouseUp وقتی این رویداد اتفاق می اقته که در مخدوده کنترل مورد نظرمون باشیم و کلیدی از موس که فشار داده شده است رو رها کنیم .
در ادامه یک مثال کامل براتون میزارم که در اون روی سطح یک فرم ویندوزی با موس می تونید نقاشی بکشید و اگه به مثال کامل دقت کنید می تونید رویدادهای استقاده شده برای موس رو کامل باهاش آشنا بشید .
کد:
1 // Fig 13.38: PainterForm.cs
2 // Using the mouse to draw on a Form.
3 using System;
4 using System.Drawing;
5 using System.Windows.Forms;
6
7 // creates a Form that is a drawing surface
8 public partial class PainterForm : Form
9 {
10 bool shouldPaint = false; // determines whether to paint
11
12 // default constructor
13 public PainterForm()
14 {
15 InitializeComponent();
16 } // end constructor
17
18 // should paint when mouse button is pressed down
19 private void PainterForm_MouseDown( object sender, MouseEventArgs e )
20 {
21 // indicate that user is dragging the mouse
22 shouldPaint = true;
23 } // end method PainterForm_MouseDown
24
25
// stop painting when mouse button is released
26 private void PainterForm_MouseUp( object sender, MouseEventArgs e )
27 {
28 // indicate that user released the mouse button
29 shouldPaint = false;
30
} // end method PainterForm_MouseUp
31
32 // draw circle whenever mouse moves with its button held down
33 private void PainterForm_MouseMove( object sender, MouseEventArgs e )
34 {
35 if ( shouldPaint ) // check if mouse button is being pressed
36 {
37 // draw a circle where the mouse pointer is present
38 Graphics graphics = CreateGraphics();
39 graphics.FillEllipse(
40 new SolidBrush( Color.BlueViolet ), e.X, e.Y, 4, 4 );
41 graphics.Dispose();
42 } // end if
43 } // end method PainterForm_MouseMove
44 } // end class PainterFormدر این مثال یک متغیر بولین به نام shoulpaint در نظر گرفتیم که هر وقت کلید موس فشار داده بشه trueمیشه و در غیر این صورت false ميشهزما می خواهیم وقتی که روی محدوده فرم موس را حرکت می دهیم و کلیدی از موس رو پایین نگه داشتیم روی موس بتونیم نقاشی کنیم به همین دلیل در رویداد Mouse_Move چک می کنیم که اگر کلیدی ازموس فشار داده شده است می تونیم روی فرمی چیزی رسم کنیم . برای این کار از کلاس Graphics و توابع اون استفاده شده که این جا جای بحث در مورود اونها نیستش چون که خودش مبحث بسیار کاملیه که به امید خدا به موقع دو مورد اونها هم مطلب میزارم .