PDA

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



complexcoding
شنبه 02 مهر 1390, 17:56 عصر
بابا ایها ناس جواب بدید؟
مشکل من اینجاست که
مثل Toolbox ویژوال استادیو
یه دکمه دارم وقتی با موس روی دکمه می رم پنل ظاهر می شه وقتی هم موس از محوطه پنل خارج بشه پنل بسته بشه اما وقتی کنترلی رو روی پنل قرار می دم دیگه هر کاری می کنم وقتی موس روی کنترل ها می ره یعنی یه جورایی از محوطه پنل خارج شده و پنل بسته شده اومدم این کد رو بنویسم که موس وقتی از مکانی ینی همون Location بیرون بره پنل بسته بشه یعنی یه جورایی موندم چیکار کنم؟

mg_mahyar
شنبه 02 مهر 1390, 18:19 عصر
کلا واضع نبود ولی کدت رو بزار تا شاید بشه کمک کرد (این مدت همش در گیر ور رفتن با موس بودم) و یه بار دیگه توضیح بده ولی واضح تر
_____
تا جایی که فهمیدم میخوای وقتی موس میره روی یه منطقه اونجا باز بشه وقتی میره بیرون بسته. من در مورد تب ها این مشکلو داشتم یعنی یک تب که روش میرفتم باز بشه. تنها موردی که تونستم انجام بدم این بود که سایز رو تغییر بدم و کم زیاد کنم. بریا ان کارم توی event click اون تب کد نوشتم. برای تغییر سایز. البته شما باید توی MouseHover بنویسی که مال زمانی هست که موس میره و چند ثانیه وایسه.(معمولا برای نمایش تولتیپ هست)

complexcoding
شنبه 02 مهر 1390, 18:27 عصر
دوست عزیز واضحش اینجوری : مثلا یه پنل داریم توی پنل 2 تا دکمه هست حالا اگر تو رویداد MouseLeave بنویسم Panel1.Visible مساوی False بشه درسته ولی وقتی با موس روی اون دو تا دکمه که توی پنل هست می ریم یه جورایی رویداد mouseleave اجرا می شه و پنل ویزیبلش فلس می شه؟ حالا موندم چیکار کنم؟

jeson_park
شنبه 02 مهر 1390, 20:25 عصر
روی رویداد mosueUp دکمه ها panle.1visbly رو برابر true قرار بده

complexcoding
شنبه 02 مهر 1390, 21:05 عصر
از راهنماییت ممنونم ولی باز نشد
یعنی این سوال حریف می طلبه ها

seven7777777
شنبه 02 مهر 1390, 23:31 عصر
البته شما می تونی با کنترل موقعیت جاری موس و مقایسه اون با محدوده پنلت به چیزی که می خوای برسی . یعنی مثلا چک کنی اگه MousePosition.X بین فلان تا فلان بود که این فلان تا فلان یکی X پنل و یکی هم X+طول پنله .

هر چند نمی دونمم روش منطقی هست یا نه .
موفق باشید

complexcoding
شنبه 02 مهر 1390, 23:38 عصر
خیلی ممنون ولی این رو قبلا هم انجام دادم در رویداد MouseMover فرم ولی وقتی از رو پنل یه دفعه به بیرون از فرم می رفتم دیگه پنل بسته نمی شه آخه جزو فرم بیچاره نیست یا از رو پنل به صورت مستقیم به کنترل دیگری تو فرم می رم بازم پنل دیگه بسته نمی شه میدونی چرا چون همون Xو Y که می گفتی دیگه اجرا نمی شه چون جزو فرم نیست یعنی موس با فرم درگیر نمی شه؟
حریف می طلبه ها ..... نبود!!!!!!

seven7777777
شنبه 02 مهر 1390, 23:59 عصر
خوب دوست عزیز اگه فرمت اطراف پنلتو گرفته ، توی MouseEnter فرمت بنویس که پنل رو محو کنه . یعنی دقیقا ورود موس رو به خارج پنل بررسی کنه ؟
ببین حله ؟

jeson_park
یک شنبه 03 مهر 1390, 00:10 صبح
بابا مگه زینگ بوکسه!؟!؟!:گیج:
دوست عزیز من منظور شما رو دقیق نمی فهمم
شما یه نگاه به اینجا (http://www.codeproject.com/KB/miscctrl/magicdocking.aspx?target=dockable%7Ccontrols)بن از مشکلت 100% حل می شه!
آموزش ساخت پنل با قابلیت دوک شدن هست

complexcoding
یک شنبه 03 مهر 1390, 00:15 صبح
واااااااااااای خدا چقدر توضیح بدم
دوستان به این تاپیک ها سر بزنید مشکل منه......
اینجا (http://barnamenevis.org/showthread.php?306187-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-%DB%8C%DA%A9-%D9%85%D9%86%D9%88-%D8%A8%D8%A7%D8%B2-%D9%85%D8%AB%D9%84-%D8%AA%D9%88%D9%84%D8%A8%D8%A7%D8%B1-%D8%AF%D8%B1-.net) و اینجا (http://barnamenevis.org/showthread.php?306492-%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-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AE%D8%A7%D8%B1%D8%AC-%D8%B4%D8%AF-Messagebox-%DB%8C%DA%A9-%D9%BE%DB%8C%D8%A7%D9%85-%D9%86%D8%B4%D9%88%D9%86-%D8%A8%D8%AF%D9%87%D8%9F) رو ببینید

complexcoding
یک شنبه 03 مهر 1390, 00:19 صبح
اگر می تونید یه نمونه خیلی ساده بسازید بزارید
می خوام مثل تولباکس VS عمل کنه وسلام ..............اینجوری به خدا بیچاره شدم ایتفدر توضیح دادم یعنی خسته شدم................

reza_magical
یک شنبه 03 مهر 1390, 00:20 صبح
سلام 1_یه متغیر از نوع بولین تعریف کن و توی فرم لودت مقدارش رو true کن. 2_توی رویداد mouseenter دکمت اون متغیرت رو false کن 3_و توی رویداد mouseleave دکمت اونو true کن 4_بعد توی رویداد mouseleave پنلت یه شرط بزار که اگه متغیرت برابر با false بود messagebox نمایش بده. فکر کنم جواب بده.اگر جواب نداد بگو.

jeson_park
یک شنبه 03 مهر 1390, 00:24 صبح
واااااااااااای خدا چقدر توضیح بدم
دوستان به این تاپیک ها سر بزنید مشکل منه......
اینجا (http://barnamenevis.org/showthread.php?306187-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-%DB%8C%DA%A9-%D9%85%D9%86%D9%88-%D8%A8%D8%A7%D8%B2-%D9%85%D8%AB%D9%84-%D8%AA%D9%88%D9%84%D8%A8%D8%A7%D8%B1-%D8%AF%D8%B1-.net) و اینجا (http://barnamenevis.org/showthread.php?306492-%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-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AE%D8%A7%D8%B1%D8%AC-%D8%B4%D8%AF-Messagebox-%DB%8C%DA%A9-%D9%BE%DB%8C%D8%A7%D9%85-%D9%86%D8%B4%D9%88%D9%86-%D8%A8%D8%AF%D9%87%D8%9F) رو ببینید
دوست عزیز
نمونه کد رو در پست شماره 9 همین تاپیک گزاشتم
همون کارتون رو راه می ندازه

seven7777777
یک شنبه 03 مهر 1390, 00:28 صبح
الان چزا شما عصبانی هستید ، فکر کنم ما باید عصبی بشیم :چشمک:

ببین کد زیر کمکت می کنه :

this.ClientRectangle.Contains(this.PointToClient(C ursor.Position))
اون this.ClientRectangle محدوده فرم رو میگیره و بررسی می کنه که موس اونجا هست یا نه !!! یه همچین جیزایی :لبخند:

complexcoding
یک شنبه 03 مهر 1390, 00:32 صبح
از راهنماییت ممنونم ولی منظورت از اون دکمه پنلی هست که شبیه تولباکس VS؟
اگر اینه که چرا دیگه متغیر تعریف کنیم تو رویداد mouseenter فرم می نویسیم ویزیبل پنل مساوی فلس دیگه!!!
نه دوستان اینطوری به جایی نمی رسیم من از صبح دارم سوال می کنم ولی همه جوابهای خوبی میدن ولی راهی هست که من قبلا رفتم این برنامه رو من آپلود کردم دانلود کنید کداشو ببینید درستش کنید
http://uploaded.to/file/7lkbife0
فقط گفتما شرطش درست کردنش اینه که رفتارش عین رفتار Toolbox ویژوال استودیو باشه ها .
یا علی
راستی با ویژوال استودیو 2008 هست

jeson_park
یک شنبه 03 مهر 1390, 00:38 صبح
قضیه salam چیه؟!؟!
فکر کنم همین اعصابتو به هم ریخته نه؟؟! :لبخند:
------
اون پیکچر باکس چیکار می کنه؟؟
من کل کد ها رو پاک کردم
بعد توی رویداد mosueEnter و mosueLeave پیکچر باکس نوشتم
panel1.Show();
panel1.Hide();
این (http://barnamenevis.org/www.codeproject.com/KB/miscctrl/DockExtender/DockExtender_src.zip) هم یه نمونه دیگه
یه کامپوننت به همراه مثال

seven7777777
یک شنبه 03 مهر 1390, 00:45 صبح
:عصبانی++:اعصاب منم به هم ریختتتتتتتتت .
انصافا کدی که بهت دادمو تست کردی ؟؟؟ :عصبانی::گریه: دیوووووووووونه شدم :گیج:

همین الان تست کردم کار کرد :

private void panel1_MouseLeave(object sender, EventArgs e)
{
if (panel1.ClientRectangle.Contains(panel1.PointToCli ent(Cursor.Position)))
panel1.Visible = true;
else
panel1.Visible = false;
}
private void button4_MouseEnter(object sender, EventArgs e)
{
panel1.Visible = true;
}

مواد مورد نیاز : یک عدد پنل ، یک عدد باتن درون پنل ، یک عدد باتن بیرون پنل . این باتن 4 همونه که برونه پنله . تورو خدا تست کن ، زود جواب بدههههههههه .
:لبخند: شوخی بودا :لبخند:

complexcoding
یک شنبه 03 مهر 1390, 00:48 صبح
من به اون لینکی که ارسال کردید نگاه کردم با اینکه کداش خیلی سنگین و پیچیده بود ولی فکر کنم از یه کتابخونه به نام Magic استفاده کرده و لینکشم برای دانلود گذاشته که باید از این طریق این کتابخونه این پنل متحرک رو پیاده سازی کرد ... ولی من می خوام همه کاراش رو خودم انجام بدم بدون استفاده از هیچ کتابخونه ای چون عضوی از پروژم هست.
ممنون اگر کمک کنید

complexcoding
یک شنبه 03 مهر 1390, 00:53 صبح
آقای سون اینطوری شد دیگه خودت یکاریش بکون :کف::لبخند:

75711

اگر مطمئنی با این کد درست خواص تولباکس VS رو پیاده سازی کردی پس سریع ببین چیکار کنم؟

seven7777777
یک شنبه 03 مهر 1390, 00:57 صبح
:متعجب: اسمت چیه ، بگو می خوام بگم فلانی کشتی منوووووووووووووووووو :گریه:
تیکه تیکه می کنم از دست تو :

panel1.ClientRectangle.Contains
panel1.PointToClient
Cursor.Position

جوووووووووون من نگو که برنامه هرو آپلود کنم :عصبانی++:
--------------------------------------------------------
شد یا نه ؟؟؟
برم بخوایم ؟؟؟ :اشتباه:

jeson_park
یک شنبه 03 مهر 1390, 01:10 صبح
دوست عزیز این خط رو اینطوری اصلاح کن

if (panel1.ClientRectangle.Contains(panel1.PointToCli net(Cursor.Posation))));
پیوست:این تاپیک رو ادامه بدیم تا فردا صبح آدمین همین بخش شدیم ! :لبخند:

complexcoding
یک شنبه 03 مهر 1390, 01:19 صبح
بابا خودتون خسته نکنید این برنامه که گفتید درست شده رو آپلود کنید ....من ویژوال استودیو 2008 دارما.

seven7777777
یک شنبه 03 مهر 1390, 01:25 صبح
ای روتو برم بابا :شیطان:
بیا ، دانلود که کردی ، اجرا کن ، برو تب سوم . فقط زودی جوابشو بده هاااااااااا !!!!:تشویق:

complexcoding
یک شنبه 03 مهر 1390, 01:39 صبح
پسر تو بی نظیری ..............تو یکی یه دونه ی داداشی هستی
ببین این آی دی منه فردا باید برام توضیح بدی چیکار کردی ساعت 11:30 منتظرتم ینم شمارمه دستت درد نکنه .:قلب:
ToorajCsharp@yahoo.com
09194810177

complexcoding
یک شنبه 03 مهر 1390, 01:44 صبح
پسر تو یه دونه ای تو دور دونه ی داداشی هستی دمت گرم
این آی دیمه ToorajCsharp@yahoo.com
اینم شمارمه 09194810177
فردا ساعت 11:30 منتظرتم می خوام ببینم چی کار کردی درست شد؟؟؟!!!

seven7777777
یک شنبه 03 مهر 1390, 01:50 صبح
من رفتم بخوابم ، بجا این همه ذوقو شوق یه نگاه به امضام بنداز .
فردا با ID زیر آن هستم ، اگه آن دیدی منو ، می تونی PM بدی :
mahdi.kheirkhah شب خوش
:چشمک:

complexcoding
یک شنبه 03 مهر 1390, 13:01 عصر
سلامی مجدد بله همانطور که مشخص بو این کد کار کرد اما یک سوال برای من پیش اومده :
چرا محیطی رو که این کد رو درون او نوشتیم MouseLeave انتخاب کردید؟

complexcoding
یک شنبه 03 مهر 1390, 17:44 عصر
نظر water_lily_2012 (http://barnamenevis.org/member.php?113535-water_lily_2012) :اشکال اینکه شما یک دکمه یا هر شی دیگری را در کنار کنار فرم خود قرار بدهید طوری که حتی نصف شی در زیر فرم باشه، حالا موس را از روی این شی از پنجره خارج کنید. خودتون متوجه موضوع می شوید!!!!!!!!!!
همین کار را انجام دادم و متوجه شدم این کد نیز با مشکل مواجه هست و وقتی از روی پنل مستقیم روی Button رفته و از فرم خارج می شیم پنل باز می مونه و بسته نمی شه!!!!!

jeson_park
یک شنبه 03 مهر 1390, 18:56 عصر
مگه شما نمی خوای هر موقع که "موس از پنل خارج شد " پنل بسته شه؟!؟؟
خو په دیگه حرف حسابت چیه!؟؟!؟ :لبخندساده:

complexcoding
یک شنبه 03 مهر 1390, 19:03 عصر
آخه وقتی با موس مستقیم می ری رو یه باتن تو فرم بدون اینکه وارد فرم بشی یعنی باتن مماس باشه با پنل ، پنل بسته نمی شه یا از روی همین باتن از فرم خارج بشی بازم پنل بسته نمی شه؟

حالا دوستان من این مطلب رو پیدا کردم ببینید باید چیکار کرد می گه یه کلاس اضافه کنید بعد از این کلاس استفاده کنید فکر کنم راه حل واقعیش این باشه بازم شما راهنمایی کنید دست همگیتون درد نکنه:
این سایت سر بزنید (http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/95a01c03-5bee-41de-8510-715d40ef181d/)

seven7777777
یک شنبه 03 مهر 1390, 23:03 عصر
یعنی می خوام بیام خفت کنمااااااااااااااااا :لبخند:
من تست کردم درستههههههه ، یعنی میشه من بفهمم تو مشکلت چیه ؟
یه باتن گذاشتم ، نصفشم زیر پنل ، از پنل خارج شدم ، هر جور ازش خارج شدم ، پنل بسته شد !!!!

فقط تورو جون من اذیت نککنننننننننننن
آخه تشکرم که نمی کنی آدم دلش خوش باشه :بامزه:

complexcoding
یک شنبه 03 مهر 1390, 23:13 عصر
ببین این پروژه رو من آپ کردم دانلود کن http://uploaded.to/file/p7csaz59
بدون اینکه Borderstyle پنل رو مساوی None قرار بدی درستش کن راستی فقط همون پنل هست دکمه های روش یعنی اصلا وقتت رو نمی گیره
ممنون

seven7777777
دوشنبه 04 مهر 1390, 00:58 صبح
یه نکته میگم خوب گوش بده . این مشکل که الان داری ، اگه پنلت روی همه آبجکتات باز شه یعنی تاپ ترین آبجکت باشه ، حل میشه که منطقا هم باید اینطور باشه که وقتی پنلت باز میشه ، روی همه آبجکتای دیگه باز بشه .
اگه این قدر بسه برات ، برنامه زیرو دانلود کن و نگاه کن .
اگه بس نیست بگو ببینم راه حلی پیدا می کنم واسه این مورد یا نه ؟!؟!؟!؟

complexcoding
دوشنبه 04 مهر 1390, 04:19 صبح
خیلی آروم از رو پنل با موس برو رو آیکون فرم و از فرم کلا خارج شو اونوقت پنل بسته نمی شه و این مشکل با none کردن خاصیت borderstyle حل می شه ولی در کل خسته نباشید همون خفتون کردم اینقدر از این سوالهای دری وری پرسیدم.
از همتون بخصوص آقای seven7777777 ممنونم.