PDA

View Full Version : می خوام وقتی موس از برنامه خارج شد Messagebox یک پیام نشون بده؟



complexcoding
شنبه 02 مهر 1390, 23:05 عصر
بسم الله الرحمن الرحیم
دوستان سلام
این شکل برنامه منه:
75708
می خوام وقتی موس از محیط برنامه خارج شد یه پیام نمایش داده بشه . خواستم این رو تو رویداد MouseLeave فرم بنویسم اما دیدم اگر موس روی یک Button هم بره این رویداد اجرا می شه؟

از کمک شما ممنونم

water_lily_2012
یک شنبه 03 مهر 1390, 10:23 صبح
از نظر من دو راه وجود داره:

یکی استفاده از Timer وبررسی کردن اینکه آیا X و Y موس از فرم خارج شده یا نه؟
دوم استفاده از EventHandler

ahrimaneahurai
یک شنبه 03 مهر 1390, 12:22 عصر
دوست عزیز من که دیشب براتون کد رو فرستادم. یکم روی همون کار کنید. با تایمر بود و درست هم کار می کرد

complexcoding
یک شنبه 03 مهر 1390, 12:53 عصر
دوست عزیز سلام این عکس مربوط به برنامه و کدی هست که شما فرستادی خوب دقت کنید
75722
همانطور که مشاهده می کنید وقتی با موس از روی پنل مستقیم روی دکمه در کنار پنل و خارج از آن می رویم پنل بسته نمی شه چون رویداد تایمر و کنترل طول و عرض موس فقط زمانی اجرا می شه که موس روی فرم بره!!!!!!!

ahrimaneahurai
یک شنبه 03 مهر 1390, 13:09 عصر
من که بهتون گفتم از mouse leave استفاده کنید. به هر امیدوارم مشکلتون حل بشه

gwbasic
یک شنبه 03 مهر 1390, 14:02 عصر
شما باید از همون رویداد MouseLeave فرم استفاده کنی فقط کد زیر رو باید توی رویدادا بنویسی

if (!ClientRectangle.Contains(this.PointToClient(Curs or.Position)))
MessageBox.Show("Form Leave");

water_lily_2012
یک شنبه 03 مهر 1390, 15:08 عصر
مشکل شما این هست که می خواهید اگر روی یک شی در کنار فرم رفتید و از روی آن خارج شدید نیز مطلع بشوید درسته؟
اگر این هست که یک کد کامل بدهم خدمتتون!!

complexcoding
یک شنبه 03 مهر 1390, 15:53 عصر
من منظور شما رو کامل متوجه نشدم ولی باز شما کدتون رو بدید . البته نگاه کنید مشکل من با این کد حل شده ولی باز کد شما رو می خوام ببینم: و اگر راه دیگه ای به غیر از این راه حل بود استقبال می کنم:
private void panel1_MouseLeave(object sender, EventArgs e)
{
if (panel1.ClientRectangle.Contains(panel1.PointToCli ent(Cursor.Position)))
panel1.Visible = true;
else
panel1.Visible = false;
}

water_lily_2012
یک شنبه 03 مهر 1390, 16:04 عصر
اول بگم که کد من بدرد شما نمی خوره.
دوم همه کد شما همینه
اگر همینه. چرا از Panel استفاده کرده ای. (از نظر من کد نویسی اشتباه)
بعد اشکال اینکه شما یک دکمه یا هر شی دیگری را در کنار کنار فرم خود قرار بدهید طوری که حتی نصف شی در زیر فرم باشه، حالا موس را از روی این شی از پنجره خارج کنید. خودتون متوجه موضوع می شوید!!!!!!!!!!

complexcoding
یک شنبه 03 مهر 1390, 16:23 عصر
حق با شما بود دوست من اینگار تنها کسی که منظور من رو متوجه شده ((البته امیدوارم)) شما هستید خوب راه حل شما چیه؟
و البته از کجا فهمیدید این کد بدین صورت با مشکل مواجه می شه؟

complexcoding
یک شنبه 03 مهر 1390, 16:29 عصر
اینجا یه بحث کلی درباره این کنترل بوده یه نگاه بندازید

اینجا (http://barnamenevis.org/showthread.php?306452-%D9%85%DB%8C-%D8%AE%D9%88%D8%A7%D9%85-%D9%88%D9%82%D8%AA%DB%8C-%D9%85%D9%88%D8%B3-%D8%A7%D8%B2-%DB%8C%D9%87-%D9%BE%D9%86%D9%84-%D8%AE%D8%A7%D8%B1%D8%AC-%D8%A8%D8%B4%D9%87-%D9%BE%D9%86%D9%84-%D8%A8%D8%B3%D8%AA%D9%87-%D8%A8%D8%B4%D9%87)

water_lily_2012
یک شنبه 03 مهر 1390, 16:56 عصر
تاپیک را دیدم.

وقتی شما خودتون یک بحث کامل انجا راه انداخته اید و دوستان لطف کرده اند جواب داده اند، دیگر چرا همین بحث را اینجا راه انداخته اید.
جالب اینجا بود که شما حتی یک تشکر هم از دوستان نکرده بودید.

mg_mahyar
یک شنبه 03 مهر 1390, 18:38 عصر
4 تا المان مثلا پنل به دور تا دور فرم بزار. (بهتره یک فرم کلی بسازی و بقیه فرماتو مشتق کنی از اون.) 4 تا پنل دور رو خیل باریک بگیر که دیده نشود. وقتی موس رفت رو پنل پیغام بده.