0

我在 VB.NET (VS 2010) 中有一个从图片框继承的用户控件。我还有一个类,它包含 40 个左右的控件属性。我还有一个带有属性网格的表单,用作编辑器。在 IDE 中单击控件的“自定义”属性时会打开编辑器表单。表单上有一个确定和取消按钮,用于保存或放弃更改。

所有这些都可以正常工作,但是当网格中的属性发生更改时,我需要让我的控件“刷新”。属性网格对此有一个事件,但我不知道如何在控件中调用或调用我的 sub 来实质上重新绘制控件。如果我直接调用子控件,直到我关闭编辑器表单(对话框)之后,控件才会刷新。有没有办法让控件在编辑器对话框仍然打开的情况下重绘/重绘?

谢谢, EluZion

4

1 回答 1

1

尝试使用Context.Instance调用 UI_Editor 时传递的内容。在GetEditStyle覆盖中,Context传递了一个对象。这包含对调用的引用UserControl

我做这样的事情(CUSTOM UI_TYPE_EDITOR):

Dim ContextOBJ as MyUserControl

Public Overrides Function GetEditStyle(ByVal context As System.ComponentModel.ITypeDescriptorContext)......

contextOBJ = CType(context.Instance, MyUserControl) 

GetEditValue覆盖中,您可以调用ContextOBJ.Refresh并且您UserControl应该立即反映任何更改。这个对我有用。

于 2012-11-16T06:54:41.257 回答