PDA

View Full Version : استفاده از کلاس شخصی TabPage برای TabControl



Reza_Shamayel
پنج شنبه 23 اسفند 1386, 08:57 صبح
با سلام خدمت همه عزیزان

بنده کلاسهای MyTabControl و MyTabPage رو طراحی کردم که به ترتیب از System.Windows.Forms.TabControl و System.Windows.Forms.TabPage به ارث برده شده.

مشکل اینه که میخوام در زمان طراحی (Design Time) وقتی که MyTabControl رو به فرم اضافه میکنم، به جای TabPage های پیش فرض، MyTabPage ایجاد بشه. در واقع میخوام بدونم که چطوری به MyTabControl بگم که برای درست کردن TabPage از کلاس بنده "MyTabPage" استفاده کنه نه از کلاس پیش فرض TabPage.

کسی میدونه که چطور میشه این کار رو انجام داد؟

saman_itc
پنج شنبه 23 اسفند 1386, 14:12 عصر
تو کلاست از همون استفاده کن.وقتی که کلاست Bilid شد که نمی تونی چیزی بهش اضافه کنی

Reza_Shamayel
پنج شنبه 23 اسفند 1386, 18:28 عصر
با سلام خدمت همه ...

آقای سامان اسدی، متاسفانه بنده متوجه منظور شما نشدم. به هر حال مشکل رو بیشتر توضیح میدم تا انشاءالله اگر جنابعالی و سایر عزیزان راه حلی داشتید، (حتما با کد برنامه) به بنده بگید.

بنده یک کلاسی بنام MyTabPage از کلاس System.Windows.Forms.TabPage مشتق کردم و برای مثال BackColor اون رو عوض کردم (مثلا آبی).
از طرف دیگه کلاس MyTabControl رو از System.Windows.Forms.TabControl مشتق کردم و میخوام که کلاس MyTabControl برای ایجاد صفحاتش از کلاس MyTabPage استفاده کنه، نه از کلاس TabPage! مخصوصا زمانی که کلاس MyTabControl رو از Toolbox به فرم اضافه میکنم.

منتظر راهنمایی اساتید محترم هستم.

saman_itc
پنج شنبه 23 اسفند 1386, 20:48 عصر
منم فکر کنم وقتی یه کلاس تعریف شد دیگه نمیشه براش مشخصاتی تعریف کرد.مثل اینکه شما یه کلاس داشته باشی توش یه فرم باشه.دیگه نمیشه توش چیزی اضافه کرد.حالا دوستان حرفه ای نظر میدن .ما هم بیشتر یاد میگیریم

Reza_Shamayel
شنبه 25 اسفند 1386, 09:18 صبح
با سلام خدمت همه

عزیزان، بنده سوالم رو خیلی ساده تر مطرح میکنم. امیدوارم که اینبار منظورم رو متوجه بشید!

من میخوام کلاس TabControlی داشته باشم که از TabPageهای خودم استفاده کنه! نه از TabPageهای پیش فرض خودش!!

منتظر راهنمایی اساتید محترم هستم ...

Reza_Shamayel
شنبه 25 اسفند 1386, 13:10 عصر
با سلام خدمت همگی

بنده به زحمت تونستم یک مثال از اینترنت پیدا کنم ولی متاسفانه درست کار نمیکنه!
توی توضیحاتش نوشته که موقع ایجاد TabPage، رنگ زمینه اونو بصورت تصادفی مقداردهی میکنه.
آیا کسی میتونه مشکل این کد برنامه رو پیدا کنه؟

sinpin
شنبه 25 اسفند 1386, 14:12 عصر
بنده کلاسهای MyTabControl و MyTabPage رو طراحی کردم که به ترتیب از System.Windows.Forms.TabControl و System.Windows.Forms.TabPage به ارث برده شده.

مشکل اینه که میخوام در زمان طراحی (Design Time) وقتی که MyTabControl رو به فرم اضافه میکنم، به جای TabPage های پیش فرض، MyTabPage ایجاد بشه. در واقع میخوام بدونم که چطوری به MyTabControl بگم که برای درست کردن TabPage از کلاس بنده "MyTabPage" استفاده کنه نه از کلاس پیش فرض TabPage.

کسی میدونه که چطور میشه این کار رو انجام داد؟


1- اینکار رو میتونید دستی انجام بدید یعنی در فایل designer همه ی System.Windows.Forms.TabPage رو به MyControl.MyTabPage تغییر بدید.
2- و برای آنکه اینکار اتوماتیک انجام شود - مطمئن نیستم - اما احتمالا باید یکسری خصوصیات و رفتارهای اون کلاس رو تحریف (override) کنید.
شاید برای مثال ایونتی مثل ControlAdded و یا ...

Reza_Shamayel
دوشنبه 27 اسفند 1386, 19:17 عصر
با سلام خدمت همه عزیزان...

کاربر دائمی محترم، sinpin، با تشکر از توجه شما نسبت به مشکل بنده، و با تشکر از راهکارتان:


1- اینکار رو میتونید دستی انجام بدید یعنی در فایل designer همه ی System.Windows.Forms.TabPage رو به MyControl.MyTabPage تغییر بدید.
بنده این راه حل را فقط بعنوان آخرین راه چاره در نظر داشتم و در نظر پیشنهادیتان:


2- و برای آنکه اینکار اتوماتیک انجام شود - مطمئن نیستم - اما احتمالا باید یکسری خصوصیات و رفتارهای اون کلاس رو تحریف (override) کنید.
شاید برای مثال ایونتی مثل ControlAdded و یا ...
پس از کلی جستجو در اینترنت بالاخره موفق شدم نمونه ای پیدا کنم. مثال زیر. ولی چند تا مشکل داره. اگه شما یا سایر دوستان برنامه نویس محترم تونستید راه حلی برای این مشکلات پیدا کنید، ممنون میشم اگه توی همین تاپیک بگید.

1- با توجه به شکل زیر، وقتیکه میخوام Button1 رو که داخل MyTabPage1 قرار داره رو با ماوس تغییر مکان بدم، (Design-Time)، پس از رها کردن کلید ماوس، Button1 به جای قبلی خودش برمیگرده! البته لازم به ذکره که موقعیت Button1 رو میشه از صفحه کلید با فشردن کلیدهای حرکتی، تنظیم نمود. در حالیکه برای Button2 که داخل TabPage1 قرار داره رو میشه به راحتی با ماوس تغییر مکان داد.
2- وقتیکه روی سربرگ MyTabPage راست کلیک میکنم، منوی کشویی (Popup menu) باز نمیشه! مگر اینکه ابتدا سربرگ رو کلیک کنم تا MyTabPage انتخاب بشه، بعد راست کلیک کنم.
3- وقتیکه MyTabControl1 به حالت انتخاب شده نیست، و در فضای خالی بعد از MyTabPage3 راست کلیک میکنم، منوی کشویی مربوط به MyTabControl1 باز نمیشه! در حالیکه همین کار روی TabControl1 و فضای خالیه بعد از TabPage3 کار میکنه.
4- شاید مشکلات دیگه ای هم داشته باشه ولی بطور کلی مشکل حاد و کاربردی نداره. اگه مشکل دیگه ای پیدا کردین چه در Design-Time و چه در Run-Time، حتما بگین.

http://barnamenevis.org/forum/D:%5CForm.jpg

Reza_Shamayel
دوشنبه 05 فروردین 1387, 17:43 عصر
با سلام خدمت همه عزیزان...

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