PDA

View Full Version : سوال: ایجاد کمبو باکس سفارشی



winner1
سه شنبه 19 فروردین 1393, 12:05 عصر
دوستان چطوری میشه یه کمبوباکس سفارشی ایجاد کرد مشکل قسمتی که باز و بسته میشه زمانی که از پنل استفاده میشه با کنترل ها تداخل داره از فرمم استفاده کنم باید هی تو هر فرمی مختصاتشو مشخص کنی که غیر استاندارد میشه میخواستم بدونم راه حل چیه ؟:قلب:

hamid_hr
سه شنبه 19 فروردین 1393, 12:42 عصر
زمانی که از پنل استفاده میشه با کنترل ها تداخل داره
یعنی چی تداخل داره؟

winner1
سه شنبه 19 فروردین 1393, 13:27 عصر
یعنی چی تداخل داره؟
117762تو تصویر اول پنل داخله یه پنل بزرگه که کامل نشون داده میشه و لی تو دومی انداز پنل که توشه ازپنل کنترل من کوچیکتره پس پنل کنترل من نمایش داده نمیشه117763

winner1
چهارشنبه 20 فروردین 1393, 20:50 عصر
دوستان راه حل چیه به نظرتون؟

winner1
چهارشنبه 20 فروردین 1393, 23:06 عصر
دوستان خیلی ساده بخش باز شوندشو نمیتونم درست کنم لطفا راهنمایی کنین

winner1
پنج شنبه 21 فروردین 1393, 11:16 صبح
دوستان سایتای خارجیم گشتم هیچی نبود :ناراحت:

ROSTAM2
پنج شنبه 21 فروردین 1393, 11:33 صبح
برای اینکار یک Drived Class از کلاس ComboBox ایجاد کنید

در این صورت می تونید هم از متدها و خصوصیت کلاس ComboBox کمک بگیرید هم به شی ساخته شده متد و خصوصیت جدید اضافه کنید

winner1
پنج شنبه 21 فروردین 1393, 11:39 صبح
برای اینکار یک Drived Class از کلاس ComboBox ایجاد کنید

در این صورت می تونید هم از متدها و خصوصیت کلاس ComboBox کمک بگیرید هم به شی ساخته شده متد و خصوصیت جدید اضافه کنید

دوست من مسله اینجاس من میخوام بتونم یک بردی یا یه پنلی رو زیر یه باتون نمایش بدم مثل اون قسمت باز شوندهی کمبو باکس

plus
پنج شنبه 21 فروردین 1393, 14:56 عصر
همونطور که گفتن، یک راه استفاده از خود کلاس ComboBox هست در صورتی که نخواهین کنترل خواصی نمایش بدین و بیشتر قصدتون رسم کردن آیتم ها به صورت سفارشی هست.
اگه قصد نمایش کنترل در اون بخش DropDown رو دارین، باید از کلاس ToolStripDropDown استفاده کنید.البته راه ساده تر (و احتمالا نه چندان اصولی) استفاده از یک فرم هست.

117817

winner1
پنج شنبه 21 فروردین 1393, 15:04 عصر
همونطور که گفتن، یک راه استفاده از خود کلاس ComboBox هست در صورتی که نخواهین کنترل خواصی نمایش بدین و بیشتر قصدتون رسم کردن آیتم ها به صورت سفارشی هست.
اگه قصد نمایش کنترل در اون بخش DropDown رو دارین، باید از کلاس ToolStripDropDown استفاده کنید.البته راه ساده تر (و احتمالا نه چندان اصولی) استفاده از یک فرم هست.

117817

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

winner1
پنج شنبه 21 فروردین 1393, 15:09 عصر
الان این چک باکسی که ساختین رو میشه بگین دقیقا چیکار مردین؟

plus
پنج شنبه 21 فروردین 1393, 20:15 عصر
از فرم استفاده کرده بودم ولی به نظرم بی کلاس و غیر استاندارد اومد ممنون ولی کاش میشد راه حلشم یاد بگیرم خیلی خوب میشد
اسم کلاس رو جستجو کنید نمونه پیدا میکنید.برای مثال، این نمونه http://www.codeproject.com/Articles/15892/Adding-a-custom-control-to-a-ToolStripDropDownButt.

الان این چک باکسی که ساختین رو میشه بگین دقیقا چیکار مردین؟
دقیقاش که خوب فکر میکنم 2-3 هزار خط کد هست (البته بخاطر اینکه هدف فقط اینی که میبینین نبوده) ولی به صورت کلی بخوام بگم اونی که زیر ComboBox قرار داره یک ToolStripDropDown هست، داخل اون، یک کنترل ToolStripControlHost قرار گرفته و یک Panel در اون Host قرار داره که چک باکس هایی که میبینید درونش Paint میشه (در واقع برای Performance بهتر، کنترل CheckBox ی وجود نداره.) ولی خوب از اونجا که ما Panel رو در اختیار داریم هر کنترلی که بخواییم رو میتونیم داخلش بگذاریم.
ToolStripDropDown یک متد Show داره که با فراخوانی اون نمایش داده میشه (مثل یک Context Menu) و بر اساس کلاس هایی که گفتم نهایتا Panel و محتواش نمایش داده میشه.

نمونه ای که درونش کنترل باشه مثل این میشه:
117830