PDA

View Full Version : موس روی کدوم کنترله!؟؟؟؟؟!



hamedAdmin
چهارشنبه 04 بهمن 1391, 08:09 صبح
سلام
ساده ترین راهکار برای اینکه وقتی روی یه کنترل موس حرکت میکنه متوجه بشیم اون کدوم کنترله که موس روی اونه چیه!
لطفا اگه راهی بجز استفاده از Control.GetChildAtPoint Method هست بفرمایید.
راستش من میخوام داخل بلاک یه رویداد mouseOver ؛کنترلی که الان موس روی اون هست روببینم چیه!

danialafshari
چهارشنبه 04 بهمن 1391, 08:32 صبح
سلام

کلاس زیر شاید بدردتون بخوره:

namespace WindowsFormsApplication1
{
public class ControlNavigationHelper
{
public static Control getYoungestChildUnderMouse(Control topControl)
{
return ControlNavigationHelper.getYoungestChildAtDesktopP oint(topControl, System.Windows.Forms.Cursor.Position);
}

private static Control getYoungestChildAtDesktopPoint(Control topControl, System.Drawing.Point desktopPoint)
{
Control foundControl = topControl.GetChildAtPoint(topControl.PointToClien t(desktopPoint));
if ((foundControl != null) && (foundControl.HasChildren))
return getYoungestChildAtDesktopPoint(foundControl, desktopPoint);
else
return foundControl;
}
}
}
label1.Text = ControlNavigationHelper.getYoungestChildUnderMouse (this).Name;

موفق باشید

danialafshari
چهارشنبه 04 بهمن 1391, 08:39 صبح
این کامله + سورس
بفرمائید :

hamedAdmin
چهارشنبه 04 بهمن 1391, 08:49 صبح
سلام

کلاس زیر شاید بدردتون بخوره:

ممنونم ولی خودمم این کد رو تو سایت stackOverflow دیده بودم ولی تو 2010 و برای wpf یه سری مشکلات داره که تستش کنی متوجه میشی
دنبال راه راحت ترم

hamedAdmin
چهارشنبه 04 بهمن 1391, 09:01 صبح
این کامله + سورس
بفرمائید :
ممنونم
ولی چون فرمم wpf هستش این nameSpace ها رو نمیشناسه:
Control.MousePosition
Control.FromHandle
!!!!!
شرمنده نگفتم دارم Wpf مینویسم و از مدیران محترمم خواهش میکنم تاپیک رو به فروم wpf انتقال ندن چون به سختی تا یه هفته دیگه کسی واسه جواب دادن اونجا پیدا بشه!

hamedAdmin
چهارشنبه 04 بهمن 1391, 12:28 عصر
آقا کسی واقعا راهی,چاهی چیزی به ذهنش نرسید؟
من منتظرم یکی بهم کمک کنه

daneshjo90
چهارشنبه 04 بهمن 1391, 12:36 عصر
با سلام
ببین یه پیشنهاد میدم بهت ببین میتونی انجامش بدی یا نه ؟

یه label بنداز رو فرمت بعدش رو هر یک از موجودیت هایی که رو فرمت داری (باتن،تکست باکس و ....) در event، mouse move هرکدوم بنویس
label1.text = button1.text;
, ....

فک کنم این بهتر باشه
ولی بازم نظرات اساتید همیشه بهتر بوده

موفق باشی

hamedAdmin
چهارشنبه 04 بهمن 1391, 12:41 عصر
خوب واسه چی خوبه این کار دوست من؟
یه بار دیگه سوالمو فکر کنم بخونید بهتر متوجه بشین.دوست عزیز من میخام درحقیقت در هر لحظه مشخص باشه کنترلی که موس روی اون قرار داره اسمش چیه که البته قطعه کدهایی که دوستمون همین بالا تو تاپیک شماره 2 و 3 گذاشته جواب میده منتها فقط تو #C من یه راهی برای WPF میخوام!

با سلام
ببین یه پیشنهاد میدم بهت ببین میتونی انجامش بدی یا نه ؟

یه label بنداز رو فرمت بعدش رو هر یک از موجودیت هایی که رو فرمت داری (باتن،تکست باکس و ....) در event، mouse move هرکدوم بنویس
label1.text = button1.text;
, ....

فک کنم این بهتر باشه
ولی بازم نظرات اساتید همیشه بهتر بوده

موفق باشی

daneshjo90
چهارشنبه 04 بهمن 1391, 12:50 عصر
خوب واسه چی خوبه این کار دوست من؟
یه بار دیگه سوالمو فکر کنم بخونید بهتر متوجه بشین.دوست عزیز من میخام درحقیقت در هر لحظه مشخص باشه کنترلی که موس روی اون قرار داره اسمش چیه که البته قطعه کدهایی که دوستمون همین بالا تو تاپیک شماره 2 و 3 گذاشته جواب میده منتها فقط تو #C من یه راهی برای WPF میخوام!

خب اگه شما یه ذره به متن من دقت کنی میتونی بفهمی که من چی گفتم
ربطی به C# و WPF هم نداره

یه دستور خیلی سادست

مینویسی هر وقت ماوس از روی کنترل هام رد شد اسمشو برام بیار
تا وقتی هم که ماوس رو حرکت ندادی همون اسم رو label نمایش داده میشه

یه نمونه ساده :

برنامه clone CD رو دیدی ؟
رو هر کنترلش میری اسمش و کاکردشو برات تو قسمت پایین برنامه نشون میده

حالا فهمیدی منظورمو ؟

موفق باشی

hamedAdmin
شنبه 07 بهمن 1391, 07:20 صبح
بذارید مساله رو دوباره بگم!
توی WPF یه کلاس داریم که کنترلای مختلف به اون دسترسی دارن میخوام درهر لحظه بفهمم کدوم کنترل به اون دسترسی داره و ساختار کلاس جوریه که اگه بدونم موس رو کدوم کنترله میفهمم همون کنترله که به کلاسم دسترسی داره!
تا اینجا خب؟؟؟؟؟
حالا یه راهش اینه که خود نام کنترل رو هم پاس بدم به این کلاس که من نمیخوام این کار رو بکنم.OK?
حالا چه دستوری تو WPF به ما میگه موس روی کدوم کنترله؟
لطفا اگه کسی میتونه جواب بده

hamedAdmin
شنبه 07 بهمن 1391, 13:16 عصر
واقعا اینجا سوال از حد متوسط بره بالاتر دیگه بی پاسخ می مونه؟؟!!!!!!!!!!!!!!!!؟؟

ali.bahrami
یک شنبه 08 بهمن 1391, 13:20 عصر
دوست عزیز اکثر دوستان جواب کاملی دادند. خوب دوست عزیز بهترین کار پاس دادن نام کنترل به کلاسه ... مگه چه عیبی داره که شما نمیخوای این کار را بکنی ؟؟؟