PDA

View Full Version : مشکل با DefaultValue



Mrs.Net
یک شنبه 18 فروردین 1387, 21:54 عصر
این خط به کنترلم اضافه کردم


[DefaultValue(typeof(Color), "Blue")]
public System.Drawing.Color ColorE
{
get { return colorE; }
set { colorE = value; }
}

ولی وقتی کنترل به فرمم اضافه میکنم
این رنگ برابر Empty میشه و داخل فایل دیزاینر هم میزنه Empty

Mahdi.Kiani
یک شنبه 18 فروردین 1387, 22:06 عصر
این خط به کنترلم اضافه کردم


[DefaultValue(typeof(Color), "Blue")]
public System.Drawing.Color ColorE
{
get { return colorE; }
set { colorE = value; }
}

ولی وقتی کنترل به فرمم اضافه میکنم
این رنگ برابر Empty میشه و داخل فایل دیزاینر هم میزنه Empty






colorE=Color.Blue;

Mrs.Net
یک شنبه 18 فروردین 1387, 22:34 عصر
خوب من نمیخوام اینکارو بکنم وگرنه چه نیازی به [DefaultValue(typeof(Color), "Blue")] بود؟!

razavi_university
یک شنبه 18 فروردین 1387, 23:23 عصر
اگر قصد ساخت کنترلی سفارشی با امکانات مورد نیاز خودتون رو دارید، باید خاصیتی رو که می‌خواهید رو Override کنین و در داخل تابع سازنده‌اش هم اون فیلد رو با مقدار مورد نظر خودتون مقدار دهی کنین.
اگر نیاز به راهنمایی بیشتری هست لطف کنین کدتون رو بگذارین تا تغییرات رو در کدتون بدم. و یا بگید چه کنترلی رو می خوایید سفارشی کنین تا بهتر بشه روش توضیح داد

Mrs.Net
دوشنبه 19 فروردین 1387, 02:19 صبح
اگر قصد ساخت کنترلی سفارشی با امکانات مورد نیاز خودتون رو دارید، باید خاصیتی رو که می‌خواهید رو Override کنین و در داخل تابع سازنده‌اش هم اون فیلد رو با مقدار مورد نظر خودتون مقدار دهی کنین.
اگر نیاز به راهنمایی بیشتری هست لطف کنین کدتون رو بگذارین تا تغییرات رو در کدتون بدم. و یا بگید چه کنترلی رو می خوایید سفارشی کنین تا بهتر بشه روش توضیح داد
حالا اگه گفتید سوال من چی بود؟!
(ساعت چنده؟)

razavi_university
دوشنبه 19 فروردین 1387, 10:10 صبح
مگه نمی خواستین در کنترل سفارشیتون مقدار پیش فرض رو تغییر بدین
اگه من سوال رو اشتباه فهمیدم معذرت می خوام
سوال رو واضحتر بگید تا منم بتونم بهتر جواب بدم

__H2__
دوشنبه 19 فروردین 1387, 10:43 صبح
سلام
دوست عزیز شما برداشت بدی از DefaultValue دارید.
این خصوصیت هیچ تغییری در مقادیر نمیدهد!
فقط به Designer (وبرخی سریالی کنندها) میفهماند که اگر مقدار این Property اینچنین بود دیگر نیازی به مقدار دهی آن و یا سریالی کردن نیست.

مثلاً توجه کرده اید که خصوصیات کنترلرها در پنجره Properties در حالت عادی با فونت عادی نمایش داده میشوند، ولی به محض تغییر در آنها Bold میشوند در همین زمان اگر به فایل design.cs مربوطه مراجعه کنید میبینید که یک خط کد برای مقدار دهی خصوصیت در نظر گرفته شده ولی وقتی مقدار پیش فرض دارند این خط کد هم دیگر اضافه نمیشود.

پس برچسب DefaultValue فقط یک نوع مشخص کنند یا اعلام کننده است.
شما اگر واقعاً میخواهید وقتی کلاسس شما ساخته میشود دارای این مقدار باشد، باید صراحتاً و در کد نمونه سازی (New) (متدی با نام خود کلاسس) این خصوصیت را دستی مقدار دهی کنید، بعد از آن پس کلاسس شما بعد از new سازی این مقدار را دارد و designer فرمها و انواع دیگر سریالی کننده این مقدار را به عنوان پیش فرض میشناسند.

موفق باشید.

sinpin
دوشنبه 19 فروردین 1387, 11:50 صبح
private Color colorE = Color.Blue;
[DefaultValue(typeof(Color), "Blue")]
public Color ColorE
{
get { return colorE; }
set { colorE = value; }
}

Mrs.Net
دوشنبه 19 فروردین 1387, 14:02 عصر
ممنون آقای H2