0

ピクチャーボックスから継承されたVB.NET(VS 2010)のユーザーコントロールがあります。コントロールのプロパティを 40 ほど保持するクラスもあります。また、エディターとして使用されるプロパティ グリッドを含むフォームもあります。IDE でコントロールの [カスタム] プロパティをクリックすると、エディタ フォームが開きます。フォームには、変更を保存または破棄する [OK] ボタンと [キャンセル] ボタンがあります。

これはすべて正常に機能しますが、グリッドでプロパティが変更されたときにコントロールを「更新」する必要があります。プロパティ グリッドにはこのためのイベントがありますが、コントロール内のサブを呼び出して呼び出して、本質的にコントロールを再描画する方法がわかりません。サブルーチンを直接呼び出すと、エディター フォーム (ダイアログ) を閉じるまでコントロールが更新されません。エディター ダイアログを開いたままコントロールを再描画/再描画する方法はありますか?

ありがとう、エルジオン

4

1 に答える 1

1

Context.InstanceUI_Editor が呼び出されたときに渡される which を使用してみてください。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 に答える