PDA

View Full Version : سوال: حذف یک Property از کنترل



Saeed Hamed
سه شنبه 24 شهریور 1388, 16:06 عصر
سلام.
کسی میتونه کمک کنه تا یک Property رو از یک کنترل حذف کنم. فرض کنید قراره Text که یک Property از کنترل TextBox هستش حذف بشه. تا اینجا میدونم که باید یک کنترل درست کنم و از TextBox ارث ببره حالا چه طوری Propertyهایی رو که نمی خوام حذف کنم؟
با تشکر.

hozouri
سه شنبه 24 شهریور 1388, 16:24 عصر
توی این سایت در این باره خیلی بحث شده اما من تا اونجایی که اطلاعات دارم شما هیچ پراپرتی رو نمی تونید حذف کنید چون جزء اطلاعات پایه یک شیء است.(البته متد هایی که خود شیء داره)

SMRAH1
سه شنبه 24 شهریور 1388, 16:26 عصر
سلام

باید از Attribute به نام Browsable استفاده کنی.مثلا اگر باشد کلا از دسترس خارج شود (و دیگر کاربردی ندارد)کد زیر موثر است:


[Browsable(false)]
public override string Text { get; set; }
موفق باشی

JaguarXF
چهارشنبه 25 شهریور 1388, 05:33 صبح
اون روش بالا غیر قابل دسترسیش میکنه یا اینکه فقط توی آبجکت برازر نشونش نمیده و هاید میشه؟

SMRAH1
چهارشنبه 25 شهریور 1388, 09:18 صبح
سلام

در این کد،دو نکته وجود داره:
1) اول چون Browseable رو به false تنظیم کردیم،چیزی در Properties نشون نمیده.اما در هنگام کد نویسی در دسترس است.
2) چون به این خصوصیت نیاز نداشتیم،اصلا پیاده سازی نشده است.اگر همچنان به مقادیر آن احتیاج است،باید در هنگام پیاده سازی،به شی base متصل شود.

موفق باشید

alireza_tavakol
پنج شنبه 26 شهریور 1388, 06:25 صبح
سلام

در این کد،دو نکته وجود داره:
1) اول چون Browseable رو به false تنظیم کردیم،چیزی در Properties نشون نمیده.اما در هنگام کد نویسی در دسترس است.
2) چون به این خصوصیت نیاز نداشتیم،اصلا پیاده سازی نشده است.اگر همچنان به مقادیر آن احتیاج است،باید در هنگام پیاده سازی،به شی base متصل شود.

موفق باشید

البته در تکمیل گفته های دوست خوبم SMRAH1

اگه از اتریبیوت زیر استفاده نمایید در هنگام تایپ در پنجره intelisent نیز خصوصیت به شما نشان داده نمی شود

[EditorBrowsable(EditorBrowsableState.Never)]

sari-1369
شنبه 28 شهریور 1388, 23:17 عصر
من توی C# مبتدی هستم ، میشه بگید این کد هارو کجا باید بنویسم ؟ من میخوام یه سری از پروپرتی ها رو از لحاظ ظاهری مخفی کنم ، با کد نویسی اگر قابل دست رسی بود اشکال نداره .

alireza_tavakol
یک شنبه 29 شهریور 1388, 01:17 صبح
من در اکثر مواقع کد زیر را در بدنه UserControl قرار می دهم تا بخشی از موارد بلااستفاده جلو چشم نباشه :چشمک:

#region NoProperties
[Browsable(false)]
public override bool AutoSize { get; set; }
[Browsable(false)]
public new string AccessibleDescription { get; set; }
[Browsable(false)]
public new string AccessibleName { get; set; }
[Browsable(false)]
public new AccessibleRole AccessibleRole { get; set; }
[Browsable(false)]
public override bool AllowDrop { get; set; }
[Browsable(false)]
public override bool AutoScroll { get; set; }
[Browsable(false)]
public new Size AutoScrollMargin { get; set; }
[Browsable(false)]
public new Size AutoScrollMinSize { get; set; }
[Browsable(false)]
public new AutoSizeMode AutoSizeMode { get; set; }
[Browsable(false)]
public override AutoValidate AutoValidate { get; set; }
[Browsable(false)]
public override Image BackgroundImage { get; set; }
[Browsable(false)]
public override ImageLayout BackgroundImageLayout { get; set; }
[Browsable(false)]
public new bool CausesValidation { get; set; }
[Browsable(false)]
public new ImeMode ImeMode { get; set; }
[Browsable(false)]
public new Padding Padding { get; set; }
[Browsable(false)]
public override RightToLeft RightToLeft { get; set; }
#endregion

sari-1369
یک شنبه 29 شهریور 1388, 14:49 عصر
مرسی ، واقعا کمکم کرد