1
我有一個PropertyGrid,它反映了我的類的屬性。如何設置propertygrid griditem標記
我在看PropertyValueChanged事件並注意到PropertyValueChangedEventArgs提供了已更改的GridItem。
那GridItem有一個我可以得到的Tag屬性。我看不到如何將GridItem的Tag屬性設置爲值。
如何設置GridItem的Tag屬性?
我有一個PropertyGrid,它反映了我的類的屬性。如何設置propertygrid griditem標記
我在看PropertyValueChanged事件並注意到PropertyValueChangedEventArgs提供了已更改的GridItem。
那GridItem有一個我可以得到的Tag屬性。我看不到如何將GridItem的Tag屬性設置爲值。
如何設置GridItem的Tag屬性?
...我原來的答案是相當遙遠,所以我改造了整個事情在這個更新中...
這裏是什麼,如果我需要滿足這個要求,我會做。
創建一個屬性,用於預先定義GridItem的值Tag;我們稱之爲TagAttribute。這可能是如此簡單:
public class TagAttribute : Attribute
{
public string TagValue { get; set; }
public TagAttribute (string tagValue)
{
TagValue = tagValue;
}
}
預先定義的標籤值,你只需要使用這個屬性來裝飾所需的性能。
public class MyAwesomeClass
{
...
[TagAttribute("This is my tag value.")]
[CategoryAttribute("Data")]
public string MyAwesomeProperty { get; set; }
...
}
然後,我會繼承PropertyGrid中和覆蓋以設置的GridItem的標籤屬性與預先定義TagAttribute一致OnPropertyValueChanged事件。現在
public partial class InheritedPropertyGrid : PropertyGrid
{
...
protected override void OnPropertyValueChanged (PropertyValueChangedEventArgs e)
{
var propertyInfo = SelectedObject.GetType().GetProperty(e.ChangedItem.PropertyDescriptor.Name);
var tagAttribute = propertyInfo.GetCustomAttributes(typeof(TagAttribute) , false);
if (tagAttribute != null)
e.ChangedItem.Tag = ((TagAttribute)tagAttribute[0]).TagValue;
base.OnPropertyValueChanged(e);
}
...
}
當你掛接到OnPropertyValueChanged這個「InheritedPropertyGrid」,該標籤屬性將被設置爲你的財產界定什麼。
ChangedItem是一個GridItem對象。我想在創建GridItem時設置標籤屬性。 但是GridItem是我的課程的一個屬性的反映。 當我創建該屬性時,我使用「描述」,「可瀏覽」等屬性。我認爲可能存在「標記」屬性。 – mohnston 2009-05-20 20:43:18