- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我目前希望使用 PropertyGrid 来允许用户编辑我的一些类,但是我在将对象传递给他们使用的 UITypeEditor 时遇到了困难。当用户按下下拉菜单时,我想显示一个包含已加载纹理的列表框以供选择,如果他们想使用应用程序尚未加载的纹理,他们可以单击一个按钮从文件对话框中选择一个。如果我在这里没有意义,请模拟以下形式:
.
我的问题:为了填充列表框,我需要访问管理来自 UITypeEditor 的资源列表的类。
现在我已经为我自己的类解决了这个问题,方法是在创建时为它们提供对其管理对象的引用。在 UITypeEditor 中,我然后使用该引用来访问我需要的内容。但是我不能为我没有编写的类执行此操作,例如 XNA Texture2D 类。
下面是我使用的类:
class StaticGeometryChunk
{
// Geometry data to draw with. Contains a reference to its managing
// class for use in its UITypeEditor.
public GeometryData { get; set; }
....
}
class Material
{
// These are XNA classes. I can't just add a reference to its managing
// class (I think?).
public Texture2D Texture1 { get; set; }
public Texture2D Texture2 { get; set; }
....
}
我一直在研究我的选择,它们似乎是:
我真的不想这样做。有几个管理类,因为每个资源的加载方式不同。还有一些类需要在这些之前创建并传入。
我也不想这样做。这似乎是一种“隐藏”问题而不是“解决”问题的快速而肮脏的方法。我也可能希望在未来有多个管理类的选项,而单例会消除这些类。
这就是我目前正在考虑做的事情。这将是非常简单和快速的事情,但有些事情让我很烦,但我不知道是什么。
关于将我需要的内容传递到 UITypeEditor 的上述方法或其他方法有什么想法吗?
感谢阅读。
最佳答案
在 EditValue 方法中,您将获得一个上下文。使用 context.Instance 访问保存您的属性的对象。该对象还应包含一个属性,使您可以访问要显示的内容列表。例如,您可以测试 context.Instance 是否为 ITextureProvider,然后转换它并访问纹理。不确定这在您的设计中是否有意义,但请告诉我。
关于c# - 将对象传递给 UITypeEditor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1010617/
我有一个自定义的 UITypeEditor,用于使用 propertygrid 与我的程序进行颜色选择,但如果我只公开 system.drawing.color,我似乎无法激活它。我需要用 Custo
我创建了一个自定义 UITypeEditor,它启动一个表单 (StringSelector) 以显示用户从中选择的字符串列表。问题是这个表单需要知道要使用什么 StringManager(strin
我目前希望使用 PropertyGrid 来允许用户编辑我的一些类,但是我在将对象传递给他们使用的 UITypeEditor 时遇到了困难。当用户按下下拉菜单时,我想显示一个包含已加载纹理的列表框以供
我有一个扩展器(IExtenderProvider),它扩展了某些类型的 具有附加属性的控件。对于这些属性之一,我有 写了一个 UITypeEditor。到目前为止,一切正常。 扩展器本身也有几个属性
我有一个属性网格,其中一个属性使用 UITypeEditor编辑值(在表单上)。 但是该属性仍然是可编辑的,这是我不想要的。有没有办法做到这一点?我看了这个类似的问题Propertygrid UIEd
我为一个属性创建了一个编辑器。但是,我想将一些参数传递给编辑器的构造函数,但我不确定如何执行此操作。 FOO _foo = new foo(); [Editor(typeof(MyEditor), t
我有一个属性网格,当单击其中一个属性的按钮时,某些字段会被填充。但是属性的集合不会被触发。我不知道为什么。 private OptoSigmaSettings dataToGet = new Opt
我正在尝试编写一个简单的属性网格,以允许用户修改图表的颜色。默认情况下,图表具有“Palette”属性,该属性的枚举类型为“ChartColorPalette”。如果作为我的属性网格基础的对象也具有相
我有一个自定义对象,可以通过自定义 TypeEditor(谈论 .NET、c# 和 winforms)从 PropertyGrid (DevExpress) 进行编辑。 我的自定义 UITypeEdi
我创建了一个自定义 UITypeEditor。 我能否从 UITypeEditor 类内部插入一个属性,该属性也将 TypeConverter 附加到我的属性? 我已经尝试了以下方法,但无论我如何扭曲
我想避免在我为其编写自定义 UITypeEditor 的特定类型的每个实例上放置 EditorAttribute。 我无法在类型上放置 EditorAttribute,因为我无法修改源。 我有一个将要
根据 http://msdn.microsoft.com/en-us/library/system.drawing.design.uitypeeditoreditstyle.aspx,我有一个 Win
我想知道 .Net-3.5 是否带有内置 List或 string[] TypeConverter或 UITypeEditor这样我就可以从属性网格编辑这种属性。 最佳答案 UITypeEditor
我正在调整 WinForms 应用程序。此应用程序有一个包含 PropertyGrid 的 Form。一个对象被分配给 SelectedObject 属性,以便属性网格显示该对象的属性。 分配的对象类
我试图全面了解您如何使用 ICustomTypeDescriptor、TypeDescriptionProvider、TypeConverter 和 UITypeEditor 来更改 Property
我正忙于编写一个 CodeSmith 模板,它的属性之一是类型 System.Type .我希望能够使用 UI 选择程序集,加载程序集,然后显示该程序集中可用的类型。然后我可以去选择其中一种。 有没有
我有一个具有一些属性的类。更改其中一个后,我想使用react并更改另一个属性。此操作应由 UITypeEditor 或 TypeConverter 完成,而不是由类本身的事件完成。 我不想使用 INo
在 Visual Studio 中,当您在解决方案资源管理器中选择项目或项目项时,有时您可能希望将自定义属性添加到属性窗口(按 F4 时弹出的窗口)。此外,要填写这些属性的值,我需要添加一个按钮来弹出
这是一个令人尴尬的问题,但我觉得我在过去几个小时里尝试了一切。 我只想在我的属性中添加以下属性 #using #using ... using namespace System::Draw
我是一名优秀的程序员,十分优秀!