我在VB.NET(VS 2010)中有一个用户控件继承自picturebox。我还有一个类,它拥有40个左右的控件属性。我还有一个带有属性网格的表单,用作编辑器。单击IDE中控件的“自定义”属性时,将打开编辑器窗体。在表单上有一个“确定”和“取消”按钮,可以保存或放弃更改。
所有这一切都很好,但是当网格中的属性发生变化时,我需要让我的控件“刷新”。属性网格有一个事件,但我不知道如何在控件中调用或调用我的sub来基本上重新绘制控件。如果我直接调用sub,则在关闭编辑器窗体(对话框)之前,控件上不会刷新任何内容。有没有办法让编辑器对话框仍然打开控件重绘/重绘?
谢谢, EluZioN
答案 0 :(得分:1)
尝试使用调用UI_Editor时传递的Context.Instance
。在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
应立即反映任何更改。它对我有用。