1

我有两个自定义类:

class Something
{
}

和:

class SomethingElse
{
public Something newSomething {get;set;}
public String aName {get;set;}
public Image aPicture {get;set;}
//etc...
}

目前,当我选择class SomethingElseduring runtime 时,它​​会填充 my PropertyGrid,向我显示我的所有属性及其相关交互。即,它说“aPicture”的地方有一个文本框字段和一个按钮[...],我可以在其中单击它,它会打开一个对话视图窗口以选择图像。

如何将此功能添加到我的自定义类?那么当 propertygrid 视图显示newSomething时,它会显示一个文本框和一个按钮吗?

我对此完全迷失了,甚至不确定我需要看什么/在哪里。我已经查看了Image class,但我在那里看不到任何明显的东西。

4

1 回答 1

1

System.Drawing.Image类有一个自定义的Editor 属性设置,它定义了一个派生自UITypeEditor基类的类,如果您使用 .NET Reflector 等工具查看它,您会看到:

[... Editor("System.Drawing.Design.ImageEditor, System.Drawing.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))...]
public abstract class Image : ...
{
   ...
}

所以你可以对你的班级做同样的事情,就像这样:

[Editor(typeof(MySomethingEditor), typeof(UITypeEditor))]
public class Something
{
   ...
}

public class MySomethingEditor: UITypeEditor
{
   ...
}

您可以在“UITypeEditor”上搜索一些示例。这是一个官方的:演练:实现 UI 类型编辑器

于 2013-07-24T20:41:38.633 回答