PDA

View Full Version : عوض کردن مقدار property در کل پروژه



behzadk
سه شنبه 19 آبان 1388, 17:55 عصر
با سلام
من توی یک پروژه یه custom control نوشتم و حالا پروژه رو به پایان که حدودا 150 تا فرم داره و در هر فرم به طور متوسط 10 تا از این کنترل استفاده کردم حالا یه خصوصیتی که قبلا موجود بود و حالا هم هست می خواییم مقدار دهی کنیم اما این کار زمان بر است
به نظر شما چه راهی است تا من بتوانم تمام این کنترل ها رو یکجا مقدار دهی کنم در ضمن مقدار اونها همشون مساوی است
یه راه خودم امتحان کردم که جواب نداد و اونم در تابع سازنده گذاشتم و سپس به پروژه اضافه کردم که نشد
با تشکر فراوان از همه

behzadk
سه شنبه 19 آبان 1388, 22:02 عصر
پس چرا کسی جواب نمی ده؟

mn_zandy63
سه شنبه 19 آبان 1388, 22:17 عصر
سلام دوست من
به نظر میاد روشی که خودت نوشتی درست باشه.
مشکلت چیه باهاش؟

behzadk
سه شنبه 19 آبان 1388, 23:07 عصر
فقط در 2 یا 3 فرم تغییرات اجرا شد در بقیه فرم ها تغییرات حاصل نشد

mn_zandy63
چهارشنبه 20 آبان 1388, 10:51 صبح
نباید اینطور باشه،
شما Custom Control ت رو داخل همون پروژه داری؟ از کجا refrence دادی؟
اگه بقیه فرمهات داخل پروژه دیگه ای هستند، شاید از یک dll دیگه دارن میخونن کنترلت رو.
ممکنه؟

far9090
چهارشنبه 20 آبان 1388, 12:06 عصر
شاید ازش دو تا داری . ولی این طبیعیه که وقتی یک property اون user control رو تغییر می دی , همه جا تغییر کنه . یک sample کوچیک درست کن و تو چند تا فرم کنترلت رو تست کن . مشکلی بود مطرح کنید . موفق باشید .

Happy_davood
چهارشنبه 20 آبان 1388, 12:34 عصر
سلام
به طور کلی همیشه هنگام ایجاد UserControl ها نباید Property ها رو بدون مقدار اولیه رها کرد . بهترین روش هم برای این کار علاوه بر مقدار دهی داخل سازنده کلاس استفاده از روش زیر هست که براتون میزارم . اگر از روش زیر استفاده نکنید و فقط در سازنده مقدار دهی کنید ، هنگام انداختن کنترل روی فرم مقدار پیش فرض اون Proprty وارد کلاس Designer فرم میشه و بعدها هنگام تغییرا دچار مشکل میشد .

مثلاً اگه دقت کرده باشید تا زمانیکه مقدار پیش فرض TextAlign رو برای یک TextBox عوض نکرده باشید هیچ وقت اون مقدار داخل Designer کلاس نوشته نمیشه و به محض تغییر نوشته میشه و رنگ Property هم به صوت Bold در میاد (در پنجره Properties) . دلیلش این هست که تمام پراپرتی های textBox دارای DefaulValue هستند . بنابراین :

داخل کنترل و روی Property که ایجاد کردید باید از Default Value استفاده کنید .
دراینصورت مقدار پیش فرض همه جا اعمال میشه .


[DefaultValue(100)]
public int PropertyName
{
.....
}