gpt4 book ai didi

c# - 查看 propertygrid 中的嵌套类

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:20 25 4
gpt4 key购买 nike

我正在使用无法修改的第三方类,我想在 winforms propertygrid 中查看它们。问题是网格不允许我扩展嵌套类。它看起来像这样。

propertygrid

第三方代码看起来像这样

[System.Xml.Serialization.XmlRoot("BBB")]
[DataContract]
public class B : INotifyPropertyChanged
{
[DataMember]
private Int32 x;
[DataMember]
private Int32 y;
public Int32 X
{
get{return x; }
set{ x = value;}
}

public Int32 Y
{
get { return y; }
set { y = value;![enter image description here][1]}
}

public event PropertyChangedEventHandler PropertyChanged;

private void RaisePropertyChanged(string propertyName)
{
RaisePropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
private void RaisePropertyChanged(object sender, PropertyChangedEventArgs arg)
{
if (PropertyChanged != null)
PropertyChanged(sender, arg);
}

public override string ToString()
{
return string.Format("X {0} , Y {1}", x,y);
}
}

[System.Xml.Serialization.XmlRoot("AAA")]
[DataContract]
public class A : INotifyPropertyChanged
{
[DataMember]
private Int32 i = 18;

[DataMember]
private Int32 j = 6;

[DataMember]
private B b;

public Int32 I
{
get { return i; }
set { i = value; }
}

public Int32 J
{
get { return j; }
set { j = value; }
}

public B BB
{
get { return b; }
set { b = value; }
}

public override string ToString()
{
return string.Format("I {0} , J {1} B {2}", i, j, b.ToString());
}

public event PropertyChangedEventHandler PropertyChanged;

private void RaisePropertyChanged(string propertyName)
{
RaisePropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
private void RaisePropertyChanged(object sender, PropertyChangedEventArgs arg)
{
if (PropertyChanged != null)
PropertyChanged(sender, arg);
}
}

我正在像这样初始化 propertygrid

A aa = new A();
propertyGrid2.SelectedObject = aa;

最佳答案

首先,当您创建基础 A 项目时,您还必须设置 BB 的值,否则它只是空值。

A aa = new A();
aa.BB = new B();
propertyGrid2.SelectedObject = aa;

为了浏览子项目,为这些项目添加一个 ExpandableObjectConverter。在您的 B 示例中,它看起来像这样:

TypeConverterAttribute BAttribute = new TypeConverterAttribute(typeof(ExpandableObjectConverter));
TypeDescriptor.AddAttributes(typeof(B), BAttribute);

关于c# - 查看 propertygrid 中的嵌套类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11672499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com