PDA

View Full Version : سوال: بازگشت مقادیر پیش فرض پراپرتی های همه ی کنترل ها هنگام باز کردن تب پیج



alisalari1981
یک شنبه 08 بهمن 1391, 22:31 عصر
سلام
چندتا تب پیج دارم و توی هرکدوم کلی کنترل
هر کنترل توی بعضی پراپرتی ها مقادیر پیش فرض دارن ، مثل متن و لاک و بک کالر و ...
در طول اجرا کاربر برخی از اینها رو تغییر میده اما ...
اما من میخوام هر بار که از این تب پیج به تب پیج دیگه میرم و برمیگردم همه مقادیر دوباره دیفالت بشه
مثل اینکه فرم دوباره باز شده باشه
چه باید کرد ؟
ممنون از همه

RED-C0DE
یک شنبه 08 بهمن 1391, 23:37 عصر
یک تابع داشته باشین ک توش مقادیر پیش فرض رو روی کنترلهای tabpage ست می کنین. حالا تو رویداد SelectedTabChanged مربوط ب TabControl این رو فراخونی کنید بازای هر tabpage

alisalari1981
دوشنبه 09 بهمن 1391, 13:54 عصر
یک تابع داشته باشین ک توش مقادیر پیش فرض رو روی کنترلهای tabpage ست می کنین. حالا تو رویداد SelectedTabChanged مربوط ب TabControl این رو فراخونی کنید بازای هر tabpage
ممنونم دوست عزیز
راه درستیه ، ولی آیا راه بهتری هست که دیگه لازم نباشه مقادیر پیش فرض برای اون همه کنترل رو یکی یکی توی یک تابع بنویسم ؟! مثلا یه امکانی که بگه تمام کنترلهای توی اون تب مثلا" ریست بشن یا دیفالت بشن ، که فقط این دستورو توی رویداد selectedtabchanged بنویسم ؟!
دقیقا" اتفاقی که موقه ی باز شدن یک فرم میفته !
بازم سپاسگذارم...

RED-C0DE
دوشنبه 09 بهمن 1391, 15:33 عصر
موقع باز شدن یک فرم هم همین اتفاقی ک گفتم می افته.
توی سازنده پیشفرض فرم دقت کنین تابع InitilizeComponents() فراخونی می شه ک مقادیر دیفالت (مقادیری ک در design ست کردین روی کنترلها) رو ست می کنه.

خیلی کارا می شه کرد ک کارتون راحتتر انجام بشه.
مثلا اگه ک این کار شما ب کرات اتفاق می افته و یا کلا دوس دارین بدونین یکی از راهاشو، یک راهکار ساده و کمی قشنگ (چون مستعد خطا هم هست بخاطر استفاده از یک نوع کلی object و تبدیل ب انواع دیگه) ک کار زیادی هم نبره ب این صورت می تونه باشه:

شما در حالت design در فرم،‌ در خاصیت Tag مربوط ب هر کنترل ،‌مقدار دیفالت اون رو ست کنید (با توجه ب اینکه مثلا برای TextBox مقدار دیفالت روی خاصیت Text معنا پیدا می کنه ، برای CheckBox روی خاصیت Checked و ... ) (اگه کنترلهاتون چند مقدار دیفالت روی چندین خاصیت داشته باشن باید ساختار این سناریو رو کمی تغییر بدین)
حالا شما یک TabControl سفارشی بسازین (با ارث بری از کنترل System.Windows.TabControl)
رویداد SelectedTabChanged اون رو هندل کنید
در این رویداد ، شما الان CurrentTab رو دارین . روی تمام کنترلهای این currentTab حرکت کنید و مقدار دیفالت اونها رو ست کنید.

alisalari1981
دوشنبه 09 بهمن 1391, 22:29 عصر
موقع باز شدن یک فرم هم همین اتفاقی ک گفتم می افته.
توی سازنده پیشفرض فرم دقت کنین تابع InitilizeComponents() فراخونی می شه ک مقادیر دیفالت (مقادیری ک در design ست کردین روی کنترلها) رو ست می کنه...

بسیااااار عالی ، خیلی ممنونم ، ولی همونطور که گفتید روی چند خاصیت میخوام مقادیر به دیفالت برگرده مثل Enabled , BackColor و ...
در این صورت چه باید کرد ؟ روی Tag چجوری مقادیر چندتا خاصیت رو تعریف کنم ؟

بسیار متشکرم.