PDA

View Full Version : آموزش: رویداد های موس در وی بی دات نت ( حتما بخونید)



Hybrid
چهارشنبه 17 اسفند 1390, 12:29 عصر
با سلام خدمت دوستان عزیز امیدوارم حالتون خوب باشه .

در این آموزش میخوام نحوه ی پاسخ به واکنش هایی که توسط موس اتفاق میوفته رو بدم.

1 ) مکان موس

واسه اینکه بفهمین در حال حاظر موس در چه مکانی از صفحه نمایش وجود داره ، میتونین از خاصیت mousePosition استفاده کنین ، به وسیله ی این خاصیت میتونین مکان موس در روی صفحه رو به شکل نقطه ( Point ) پیدا کنین پس برای به دست آورن مقدار های x (طول ) و Y (عرض) شما باید کدی به شکل زیر بنویسین :


MessageBox.Show("X : " & MousePosition.X & " " & "Y :" & MousePosition.Y)

راه دیگش اینه که از Cursor.position استفاده کنین چیزی شبیه کد زیر :


MessageBox.Show("X : " & Cursor.Position.X & " " & "Y:" & Cursor.Position.Y)

تفاوتشون اینه که Cursor.position مثل MousePosition خاصیتی ReadOnly نیست این به این معنی هست که شما به وسیله ی این خاصیت میتونین موس رو به هر جایی که دوست داشتین ببرین ، کد زیر رو داخل رویداد Click یک دکمه قرار بدین و نتیجه رو مشاهده کنین :


Cursor.Position = New Point(200, 100)


2 ) فهمیدن اینکه کدام دکمه موس فشار داده شده :

وقتی که شما از رویداد MouseClick که در اکثر کنترل ها وجود داره استفاده میکنین روی قطعه کد زیر میتونیم بفهمیم که کاربر کدام دکمه موس رو فشار داده.کد زیر رو داخل رویداد MouseClick فرم بنویسین و نتیجه را مشاهده کنین :


MessageBox.Show(e.Button.ToString())

e.button یکی از نوع داده های شمارشی(enum) هست که تمام کلیدهای موس رو تحت پوشش قرار میده.کد زیر رو داخل رویداد MouseClick فرم قرار بدین و نتیجه رو مشاهده کنین :


Select Case (e.Button)
Case Windows.Forms.MouseButtons.Right
MessageBox.Show("شما کلیک راست کردین")
Case Windows.Forms.MouseButtons.Left
MessageBox.Show("شما کلیک چپ کردین")
Case Windows.Forms.MouseButtons.Middle
MessageBox.Show("شما کلیک وسط کردین")
Case Windows.Forms.MouseButtons.None
MessageBox.Show("شما هیچ دکمه ای رو فشار ندادین ! ")
Case Windows.Forms.MouseButtons.XButton1
MessageBox.Show("کلید اضافی شماره 1 فشار داده شد")
Case Windows.Forms.MouseButtons.XButton2
MessageBox.Show("دکمه اضافی شماره 2 فشار داده شد")
End Select

3 ) پیمایش موس ( Scrolling ) :

همینطور شما میتونین جهت چرخش و مقدار چرخش ، چرخنده موس رو به وسیله ی خاصیت e.delta از رویداد MouseWheel بفهمین :



Private Sub Form1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseWheel
MessageBox.Show(e.Delta.ToString())
End Sub

e.delta میگه که شما چه قدر چرخنده موس رو چرخش دادین ، این خصوصیت بستگی به تنظیمات مربوط به Mouse Wheel در Control Panel ویندوز داره برای همینه ممکنه مقدار چرخش در کامپیوتر من با مقدار چرخش در کامپیوتر شما با همدیگه متفاوت باشه.ولی خوبیش اینه که شما میتونین راحت جهت چرخش ، چرخنده موس رو به وسیله ی این خصوصیت بفهمین . کد زیر رو در رویداد MouseWheel مربوط به فرم امتحان کنین:


If e.Delta > 0 Then
MessageBox.Show("جهت بالا")
ElseIf e.Delta < 0 Then
MessageBox.Show("جهت پایین")
End If

دانلود به صورت PDF (http://thelife.persiangig.com/other/Mouse_Event.pdf)

مترجم و نویسنده : سیاوش ابراهیمی

منبع (http://forum.codecall.net/visual-basic-tutorials/22383-mouse-visual-basic-net.html#post274386)

موفق و سربلند باشین ( vbBoss ).

فرید نجفلو
چهارشنبه 17 اسفند 1390, 15:01 عصر
e.delta میگه که شما چه قدر چرخنده موس رو چرخش دادین ، این خصوصیت بستگی به تنظیمات مربوط به Mouse Wheel در Control Panel ویندوز داره برای همینه ممکنه مقدار چرخش در کامپیوتر من با مقدار چرخش در کامپیوتر شما با همدیگه متفاوت باشه
پیش فرض و استاندارد این مقدار 120 است یعنی به طور معمول اگه Delta رو تقسیم بر 120 کنیم تعداد چرخش ها رو می تونید حساب کنید

Hybrid
چهارشنبه 17 اسفند 1390, 15:26 عصر
پیش فرض و استاندارد این مقدار 120 است یعنی به طور معمول اگه Delta رو تقسیم بر 120 کنیم تعداد چرخش ها رو می تونید حساب کنید

باهاتون موافقم ، در بعضی از کامپیوتر ها دیدم که مقدار موجود(Mouse Wheel ) در Control Panel تغییر میدن واین مقدار(120) تغییر میکنه ولی استانداردش همونیه که شما گفتین.

aknj56
چهارشنبه 17 اسفند 1390, 19:49 عصر
سلام دوست عزیز ممنون از آموزش خوبتون استفاده کردم با تشکر

JaVa
چهارشنبه 17 اسفند 1390, 23:12 عصر
من یه مدتی دنبال این مطلب (مختصات ماوس روی فرم) می گشتم. مرسی از آموزش خوبتون.:تشویق:

JaVa
پنج شنبه 18 اسفند 1390, 11:48 صبح
سلام ...

یه نکته کوچولو :

برای اینکه مختصات ماوس رو روی فرم بدست بیاریم می تونیم در رویدادMouseMove فرم از این دستور هم استفاده کنیم.


Me.Text = "X:" + Str(e.X) + "Y:" + Str(e.Y)


پارامتر X مختصات X ماوس میده.


پارامترY مختصات Yماوس میده.

فرید نجفلو
پنج شنبه 18 اسفند 1390, 11:53 صبح
اگه بخوایم راحتر بنویسیم میشه:
Me.Text=e.Location.ToString