PDA

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



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

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

1 ) مکان موس

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


this.Text = ("X : " + MousePosition.X.ToString() + " " + "Y : " + MousePosition.Y.ToString());

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


this.Text = "X : " + Cursor.Position.X.ToString() + " " + "Y : " + Cursor.Position.Y.ToString();

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


Cursor.Position = new Point(200, 100);


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

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


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

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


switch ((e.Button)) {

case System.Windows.Forms.MouseButtons.Right:

MessageBox.Show("شما کلیک راست کردین");

break;
case System.Windows.Forms.MouseButtons.Left:

MessageBox.Show("شما کلیک چپ کردین");

break;
case System.Windows.Forms.MouseButtons.Middle:

MessageBox.Show("شما کلیک وسط کردین");

break;
case System.Windows.Forms.MouseButtons.None:

MessageBox.Show("شما هیچ دکمه ای رو فشار ندادین ! ");

break;
case System.Windows.Forms.MouseButtons.XButton1:

MessageBox.Show("کلید اضافی شماره 1 فشار داده شد");

break;
case System.Windows.Forms.MouseButtons.XButton2:

MessageBox.Show("دکمه اضافی شماره 2 فشار داده شد");

break;
}


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

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


private void Form1_MouseWheel(object sender, System.Windows.Forms.MouseEventArgs e)
{
MessageBox.Show(e.Delta.ToString());

}


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


if (e.Delta > 0) {
MessageBox.Show("جهت بالا");


} else if (e.Delta < 0) {
MessageBox.Show("جهت پایین");

}


[/URL]
مترجم و نویسنده : سیاوش ابراهیمی

[URL="http://forum.codecall.net/visual-basic-tutorials/22383-mouse-visual-basic-net.html#post274386"]منبع (http://thelife.persiangig.com/other/Mouse_Event.pdf)

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

sajjad.moghadam
یک شنبه 29 فروردین 1395, 15:37 عصر
ممنون از مطالب مفیدتون. اما میشه بگید چطور میشه به موس فرمان کلیک داد. مثلا موس را با استفاده از دستوری که گفتید به یک نقطه ببرم. و بعد کلیک راست یا چپ انجام بدم.
می خوام این دستورات خارج از فرم هم کار کنه. ( اگر نیاز به توابع api داره راهنمایی کنید لطفا) مبتدی هستم:افسرده: