C# 如何显示PropertyGrid中不常见的属性?
Microsoft文档显示PropertyGrid仅显示数组中所有对象的公共属性 因此,我尝试将具有不同属性值的对象应用于propertygrid.SelectedObject,发现propertygrid中的属性未显示任何内容(空白) 当对象具有不同的属性值时,是否可以使属性显示不同的内容(例如,不同的选项…)?因为当所选对象具有不同的属性值或相同的属性值为空(null)时,它是不明确的 以下是我的代码示例:C# 如何显示PropertyGrid中不常见的属性?,c#,winforms,C#,Winforms,Microsoft文档显示PropertyGrid仅显示数组中所有对象的公共属性 因此,我尝试将具有不同属性值的对象应用于propertygrid.SelectedObject,发现propertygrid中的属性未显示任何内容(空白) 当对象具有不同的属性值时,是否可以使属性显示不同的内容(例如,不同的选项…)?因为当所选对象具有不同的属性值或相同的属性值为空(null)时,它是不明确的 以下是我的代码示例: public partial class Form1 : Form { Re
public partial class Form1 : Form
{
Rectangle[] rectangles = { new Rectangle(2, 2),new Rectangle(1, 2)};
public Form1()
{
// The initial constructor code goes here.
InitializeComponent();
propertyGrid1.SelectedObjects = rectangles;
}
}
public class Rectangle
{
public Rectangle(int height, int width)
{
Height = height;
Width = width;
}
[Category("1. Property")]
[DisplayName("1. Height")]
public int? Height { get; set; }
[Category("1. Property")]
[DisplayName("2. Width")]
public int? Width { get; set; }
}
运行以上命令后,我得到以下结果:
但我预期的结果如下(我使用photoshop,因为我无法实现它):
对不起,我没有澄清我的问题。假设有两种情况:
案例1:两个选定对象具有不同的“高度”值,即一个高度为2,另一个高度为1,然后我们在属性网格中看到该属性的“空白值”
案例2:两个选定对象具有相同的“高度”值:NULL,然后同样,我们在属性网格中看到该属性的“空白值”
是否有可能区分案例1和案例2
提前感谢。如果没有看到所需的类和代码示例以及无法按预期工作的内容,则很难回答此问题。我建议您仔细阅读SO部分,因为它显示了SO是如何工作的。这可能会有所帮助。此外,您可能会发现SO部分很有用。回答此类问题所需的代码示例谢谢提醒。我只是将问题调整得更具体一些。您需要一个自定义
编辑器
和/或自定义类型转换器
,具体取决于您要显示的编辑器类型以及是否允许编辑属性值。例如,用[Editor(typeof(CollectionEditor),typeof(UITypeEditor))]
装饰以显示标准CollectionEditor
界面。当然,它不会显示属性值,因为它不知道如何处理您的类型,但是您可以从这个编辑器派生自定义编辑器并转换对象。或自定义可扩展对象转换器
。顺便说一句,您的类对象的名称不好,构造函数需要重载。您还可以在自定义编辑器中显示任何其他表单对象:您构建的表单以您想要的方式处理这些值的表示(并最终进行编辑)(即构建专门的自定义接口)。