2
我想公開自定義控件中的一些屬性。我需要輸入三個參數,我從控件中公開爲Browsable
屬性。根據一個物業的投入,其他兩個可能不需要。如何根據第一個屬性的選擇來禁用/隱藏不需要的屬性?禁用設計視圖屬性網格中的屬性
我想公開自定義控件中的一些屬性。我需要輸入三個參數,我從控件中公開爲Browsable
屬性。根據一個物業的投入,其他兩個可能不需要。如何根據第一個屬性的選擇來禁用/隱藏不需要的屬性?禁用設計視圖屬性網格中的屬性
是的,有一點點反思,就可以實現這一點:
public class TestControl : Control {
private string _PropertyA = string.Empty;
private string _PropertyB = string.Empty;
[RefreshProperties(RefreshProperties.All)]
public string PropertyA {
get { return _PropertyA; }
set {
_PropertyA = value;
PropertyDescriptor pd = TypeDescriptor.GetProperties(this.GetType())["PropertyB"];
ReadOnlyAttribute ra = (ReadOnlyAttribute)pd.Attributes[typeof(ReadOnlyAttribute)];
FieldInfo fi = ra.GetType().GetField("isReadOnly", BindingFlags.NonPublic | BindingFlags.Instance);
fi.SetValue(ra, _PropertyA == string.Empty);
}
}
[RefreshProperties(RefreshProperties.All)]
[ReadOnly(true)]
public string PropertyB {
get { return _PropertyB; }
set { _PropertyB = value; }
}
}
這將禁用PropertyB每當PropertyA是一個空字符串。
發現這篇文章在the Code Project描述這個過程。
謝謝親愛的會看看這個! – TheVillageIdiot 2011-12-31 14:56:25