توسعه و پایگاه داده اکسس
196 subscribers
9 photos
8 videos
61 files
2 links
Download Telegram
🖌فرق رویداداهای mouseEnter، mouseHover و mousemove در سی‌شارپ؟

در سی‌شارپ، رویدادهای MouseEnter، MouseHover و MouseMove همگی مربوط به حرکت ماوس هستند، اما تفاوت‌های کلیدی در زمان و نحوه فعال شدن آن‌ها وجود دارد:

1. رویداد MouseEnter:
زمان فعال شدن: این رویداد زمانی فعال می‌شود که نشانگر ماوس برای اولین بار وارد محدوده یک کنترل می‌شود.
تکرار: فقط یک بار در هر ورود ماوس به کنترل فعال می‌شود.
کاربرد: برای انجام عملیاتی که باید فقط یک بار هنگام ورود ماوس به کنترل انجام شود، مانند نمایش یک پیام راهنما یا تغییر ظاهر کنترل.

2. رویداد MouseHover:
زمان فعال شدن: این رویداد زمانی فعال می‌شود که نشانگر ماوس برای مدت معینی (به طور پیش‌فرض 400 میلی‌ثانیه) بدون حرکت در محدوده یک کنترل باقی بماند.
تکرار: فقط یک بار در هر بار مکث ماوس در کنترل فعال می‌شود.
کاربرد: برای نمایش اطلاعات اضافی یا انجام عملیاتی که نیاز به مکث ماوس دارد، مانند نمایش یک پیش‌نمایش یا منوی زمینه.

3. رویداد MouseMove:
زمان فعال شدن: این رویداد به طور مداوم با هر حرکت نشانگر ماوس در محدوده یک کنترل فعال می‌شود.
تکرار: به تعداد دفعات حرکت ماوس در کنترل فعال می‌شود.
کاربرد: برای ردیابی دقیق حرکت ماوس و انجام عملیاتی که نیاز به واکنش به هر حرکت دارند، مانند کشیدن و رها کردن عناصر یا رسم گرافیکی.

به طور خلاصه:
MouseEnter: ورود ماوس به کنترل
MouseHover: مکث ماوس در کنترل
MouseMove: حرکت ماوس در کنترل

این تفاوت‌ها باعث می‌شود هر رویداد برای کاربردهای خاصی مناسب باشد.
مدت زمان mouseHover را چطور تغییر دهیم؟

برای تعیین مدت زمان رویداد MouseHover در سی‌شارپ، می‌توانید از ویژگی SystemInformation.MouseHoverTime استفاده کنید. این ویژگی مدت زمانی (بر حسب میلی‌ثانیه) را نشان می‌دهد که نشانگر ماوس باید در محدوده یک کنترل باقی بماند تا رویداد MouseHover فعال شود.

int hoverTime = System.Windows.Forms.SystemInformation.MouseHoverTime;
Console.WriteLine("مدت زمان MouseHover: " + hoverTime + " میلی‌ثانیه");

نکات مهم:
مقدار پیش‌فرض: مقدار پیش‌فرض این ویژگی معمولاً 400 میلی‌ثانیه است، اما ممکن است در سیستم‌های مختلف متفاوت باشد.
مقدار قابل تغییر نیست: توجه داشته باشید که ویژگی SystemInformation.MouseHoverTime فقط خواندنی است و نمی‌توانید مقدار آن را مستقیماً تغییر دهید. این مقدار توسط تنظیمات سیستم عامل تعیین می‌شود.
روش‌های جایگزین: اگر نیاز به کنترل دقیق‌تری بر مدت زمان مکث ماوس دارید، می‌توانید از تایمرها (Timers) برای پیاده‌سازی منطق سفارشی استفاده کنید. با استفاده از تایمر، می‌توانید مدت زمان مکث ماوس را به دلخواه خود تنظیم کنید.

مثال با استفاده از تایمر:

using System;
using System.Windows.Forms;

public class HoverButton : Button
{
private Timer timer;
private bool isHovering = false;
private int delay = 1000; // مدت زمان مکث (1 ثانیه)

public HoverButton()
{
timer = new Timer();
timer.Interval = delay;
timer.Tick += Timer_Tick;

this.MouseEnter += HoverButton_MouseEnter;
this.MouseLeave += HoverButton_MouseLeave;
}

private void HoverButton_MouseEnter(object sender, EventArgs e)
{
isHovering = true;
timer.Start();
}

private void HoverButton_MouseLeave(object sender, EventArgs e)
{
isHovering = false;
timer.Stop();
}

private void Timer_Tick(object sender, EventArgs e)
{
if (isHovering)
{
// رویداد MouseHover سفارشی
MessageBox.Show("MouseHover سفارشی!");
}
timer.Stop();
}
}
در این مثال، یک دکمه سفارشی (HoverButton) ایجاد شده است که از تایمر برای پیاده‌سازی رویداد MouseHover با مدت زمان مکث قابل تنظیم استفاده می‌کند.
1
شرح رویدادها به زبان ساده:

private void Form1_MouseMove(bject sender, MouseEventArgs e)

این متد، یک کنترل‌کننده رویداد (event handler) در زبان برنامه‌نویسی سی شارپ است که برای مدیریت رویداد حرکت ماوس (MouseMove) در فرمی به نام Form1 استفاده می‌شود. اجازه دهید هر بخش از این متد را به زبان ساده توضیح دهیم:

1. private void Form1_MouseMove(...):
عبارت private: این کلمه کلیدی نشان می‌دهد که این متد فقط در داخل کلاس Form1 قابل دسترسی است.
عبارت void: این کلمه کلیدی به این معنی است که این متد هیچ مقداری را برنمی‌گرداند.
عبارت Form1_MouseMove: این نام متد است که نشان می‌دهد این متد برای رویداد MouseMove در فرم Form1 طراحی شده است.

2. (object sender, MouseEventArgs e):

عبارت object sender: این پارامتر، شیئی (object) را نشان می‌دهد که رویداد را ایجاد کرده است. در این حالت، این شیء فرم Form1 است.
عبارت MouseEventArgs e: این پارامتر، یک شیء از نوع MouseEventArgs است که اطلاعات مربوط به رویداد ماوس را در خود دارد. این اطلاعات شامل موارد زیر است:
موقعیت فعلی ماوس (X و Y)
وضعیت دکمه‌های ماوس (کلیک شده یا نشده)
تعداد کلیک‌های ماوس

3. بدنه متد:
در داخل بدنه متد، می‌توانید کدی را بنویسید که می‌خواهید هنگام حرکت ماوس در فرم اجرا شود. برای مثال، می‌توانید موقعیت ماوس را روی صفحه نمایش دهید، یک شکل را با حرکت ماوس جابجا کنید، یا هر عملیات دیگری را انجام دهید.

به طور خلاصه:
این متد هر بار که ماوس در داخل فرم Form1 حرکت می‌کند، اجرا می‌شود. در داخل این متد، می‌توانید با استفاده از پارامتر e، به اطلاعات مربوط به حرکت ماوس دسترسی پیدا کنید و عملیات مورد نظر خود را انجام دهید.

مثال:

در کد زیر، موقعیت ماوس در هر حرکت ماوس در یک Label نمایش داده می شود.

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
label1.Text = "X: " + e.X + ", Y: " + e.Y;
}
در این مثال، label1 یک کنترل Label در فرم Form1 است. هر بار که ماوس حرکت می‌کند، موقعیت X و Y ماوس در Label نمایش داده می‌شود.
ویژگی‌های آرگومان E در رویداد mouseEnter و mouseClick

در رویدادهای MouseEnter و MouseClick در سی شارپ، آرگومان e از نوع MouseEventArgs است و
حاوی اطلاعات مربوط به رویداد ماوس است. این آرگومان ویژگی‌های مختلفی دارد که به شما امکان می‌دهد اطلاعات
مهمی درباره رویداد ماوس دریافت کنید.

ویژگی‌های مهم آرگومان e در رویدادهای MouseEnter و MouseClick:

e.X و e.Y:
این ویژگی‌ها موقعیت افقی (X) و عمودی (Y) نشانگر ماوس را نسبت به گوشه بالا سمت چپ کنترل نشان می‌دهند.
e.Button:
این ویژگی دکمه ماوسی را که کلیک شده است، نشان می‌دهد. مقدار این ویژگی از نوع MouseButtons است و
می‌تواند یکی از مقادیر زیر باشد:
MouseButtons.Left (دکمه چپ ماوس)
MouseButtons.Right (دکمه راست ماوس)
MouseButtons.Middle (دکمه وسط ماوس)
MouseButtons.None (هیچ دکمه‌ای کلیک نشده است)
e.Clicks:
این ویژگی تعداد کلیک‌های ماوس را نشان می‌دهد. برای مثال، اگر کاربر دو بار سریع کلیک کند، مقدار این ویژگی 2
خواهد بود.
e.Delta:
این ویژگی مقدار چرخاندن چرخ ماوس را نشان می دهد, که اغلب برای رویداد های اسکرول استفاده می‌شود.
e.Location:
این ویژگی یک شی از نوع Point است که موقعیت (X و Y) ماوس را نشان می‌دهد.
تفاوت در رویدادهای MouseEnter و MouseClick:

MouseEnter:
در رویداد MouseEnter، آرگومان e بیشتر برای تعیین موقعیت ماوس هنگام ورود به کنترل استفاده می‌شود.
ویژگی e.Button در این رویداد معمولاً MouseButtons.None است، زیرا این رویداد زمانی فعال می‌شود
که ماوس وارد کنترل می‌شود، نه زمانی که دکمه‌ای کلیک می‌شود.
MouseClick:
در رویداد MouseClick، آرگومان e برای تعیین موقعیت ماوس و همچنین دکمه‌ای که کلیک شده است، استفاده می‌شود.
ویژگی e.Button در این رویداد دکمه‌ای را نشان می‌دهد که کلیک شده است.
ویژگی e.Clicks در این رویداد تعداد کلیک های انجام شده را ثبت می‌کند.

به طور خلاصه:
آرگومان e در هر دو رویداد MouseEnter و MouseClick اطلاعات مربوط به ماوس را فراهم می‌کند.
تفاوت اصلی در استفاده از ویژگی e.Button است. در MouseEnter، این ویژگی معمولاً None است،
در حالی که در MouseClick، دکمه کلیک شده را نشان می‌دهد.
در وصف معلم
«اساس عدل او محکم، لباس فضل او مُعْلَمْ
هنر در فعل او مدغم، خرد در لفظ او مضمر»
شاعر: عنصری
نمونه سوال پودمان 5-6.pdf
2.7 MB
نمونه سوال پودمان 5 توسعه همراه با شرح برخی دستورات
نمونه آزمون‌های پودمان 4 توسعه:
آزمون توسعه-پ 4-گروه 1 -یکشنبه
آزمون توسعه-پ 4-گروه 2 -یکشنبه
آزمون توسعه-پ 4-گروه 1 - چهارشنبه