我在应用程序框架的配置编辑器中大量使用属性表。我很喜欢他们,因为这是相当容易的工作与他们(一旦你学会如何),使编辑防弹。在
我在配置中存储的内容之一是Python脚本。在StringCollection编辑器中编辑Python脚本是可能的,这也是我一直在使用的,但是“可能”和“可用”之间有很长的距离。我希望有一个编辑器,它实际上支持可调整大小和等宽字体,保留空白行,并且-嘿,让我们疯狂地使用wishlist-did语法着色。在
如果我真的需要的话,我当然可以写这篇文章,但我宁愿不写。在
我在谷歌上翻了翻,找不到我所描述的东西,所以我想我应该在这里问问。这个问题解决了吗?有没有人已经开始尝试建立一个更好的编辑?在
您需要编写自己的类型编辑器。您可以将其视为一个用户控件,因为当您编写自己的类型编辑器时,您将提供在属性网格编辑属性时出现的UI控件。因此,您可以创建一个可以执行任何操作的类型编辑器,这意味着如果您有第三方编辑器控件,则可以将其作为类型编辑器的一部分。在
一些帮助您入门的资源:
您可以按照以下简单步骤轻松创建自己的字符串集合编辑器。本例使用C#。
1)必须创建一个编辑器控件并从
System.Drawing.Design.UITypeEditor
派生它。我打电话给我的。所以我的课从
^{pr2}$PropertyGrid
控件需要知道编辑器是模态的,并且当选择相关属性时,它将显示省略号按钮。因此您必须重写GetEditStyle
,如下所示:最后,editor控件必须重写
EditValue
操作,这样当用户单击属性的省略号按钮时,它就知道要如何继续。以下是覆盖的完整代码:发生了什么事?当用户单击省略号时,将调用此重写。
editorService
被设置为我们编辑表单的接口。它被设置为我们尚未创建的形式,我称之为TextArrayPropertyForm
。TextArrayPropertyForm
被实例化,传递要编辑的值。为了更好地度量,我还传递了两个字符串,一个用于表单标题,另一个用于顶部的标签,用于解释用户应该做什么。它是以模式显示的,如果单击了OK按钮,那么该值将更新为我们将创建的表单中selectionControl.Value
中设置的值。最后,在重写结束时返回该值。在步骤2)创建编辑器表单。在我的例子中,我创建了一个包含2个按钮(
buttonOK
和buttonCancel
)、标签(labelInstructions
)和文本框(textValue
)的表单,以模拟默认的StringCollection编辑器。代码非常简单,但是如果您感兴趣,就在这里。在步骤3)告诉PropertyGrid使用备用编辑器。此属性与PropertyGrid控件中使用的任何其他属性之间的更改是[Editor]行。在
现在,当您在窗体上创建PropertyGrid并设置为包含此文本属性的类时,它将在您的自定义窗体中进行编辑。有无数的机会来改变你的定制形式,你选择的方式。经过修改,这将适用于编辑任何你喜欢的类型。重要的是编辑器控件返回的类型与被重写的
EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
中的属性相同希望这有帮助!在
相关问题 更多 >
编程相关推荐