PDA

View Full Version : حرفه ای: تشخیص نوع داده در رویداد drag and drop



hojjatshariffam
چهارشنبه 27 مرداد 1389, 14:07 عصر
سلام
من یه مشکلی برام جدیدا پیش اومده که هر جور که اینور اونور می کنم نمی تونم یه جواب بهینه براش پیدا کنم
راست گفتند که آدم هر چی کمتر بدونه راحت تر (آخه تازه Drag and Drop رو یاد گرفتم اینه که این مشکل برام پیش اومده)

من یه کامپوننت رو با ماوس میخوام به یه جای دیگه درگ کنم
یه یوزر کنترل درست کردم و اونو تو فرمم انداختم و یه FlowLayoutPanel هم دارم که این یوزر کنترل رو میگیره
تا اینجاش برام خیلی سخت بود ولی با کمک دوستانی که قبلا تو پست ها انتقال تجربیات کرده بودند تونستم بالاخره حلش کنم
حالا مشکل اینجاست که چنت تا کلاس دیگه از این یوزر کنترل پایه اولیه ارث می بره که من می خوام همه اینا این کار رو برام انجام بدن
مشکل دقیقا روی آرگومان DragEventArgs می باشد که به این صورت در رویداد FlowLayoutPanel1_DragDrop قابل دسترس می باشد



BaseClass ObjectName = (BaseClass )e.Data.GetData(typeof(BaseClass ));


خب بزارین بیشتر توضیح بدم:
حالا من چند تا کلاس مشتق شده از این BaseClassدارم ، اگه دقیقا اسم کلاسی رو که در هنگام DoDragDrop ارسال می کنیم رو به کد بالا ندهیم متغیر ObjectNameمقدار null می گیره حتی اگه کلاس داده شده فرزند کلاس داده شده باشه
من خودم یه راه حلی پیدا کردم که در کد زیر آوردمش ولی اگه تعداد فرزندان کلاس پدر بیشتر شد چی؟
حتما روش بهتر وجود داره




BaseClass ObjectName = (BaseClass )e.Data.GetData(typeof(BaseClass ));



if (ObjectName == null) ObjectName = (ChildClass1 )e.Data.GetData(typeof(ChildClass1));



if (ObjectName == null) ObjectName = (ChildClass2 )e.Data.GetData(typeof(ChildClass2));
......



چطور میشه از داخل e.Data مقدار کلاس رو راحت تر درآورد؟
اگه یکم بد توضیح دادم ببخشید ، اگه لازم باشه بازم بیشتر توضیح می دم

hojjatshariffam
پنج شنبه 28 مرداد 1389, 22:59 عصر
من منتظر جواب دوستان هستم