2

RadioButton のサブクラスである .NET (具体的には C#) コントロールがあり、それに 2 番目のテキスト文字列を追加する追加のプロパティがあります。実際、プロパティが正確に何をするかは重要ではありません。重要なことは、コントロールの外観を変更する必要があるということです。

デザイン ビューでこのプロパティを変更して Enter キーを押しても、フォーム デザイナーのコントロールは変更されません。RadioButton に既に存在するプロパティを変更すると、コントロールは新しいテキストで再描画されます。これはおそらく IDesigner 型または属性によって達成されると思いますが、何がわかりません。

追加したプロパティの変更時にコントロールを再描画するにはどうすればよいですか?

4

2 に答える 2

3

おそらくほとんどの人はコメントを読んでいないので、回答として投稿します。

非常に簡単な例で説明しましょう。

public override Color ForeColor
{
    get { ... }
    set
    {
        if (_foreColor == value) return;
        _foreColor = value;

        // Force redraw to show new color in designer instantly
        if (DesignMode)
            Invalidate();
    }
}

無効化は再描画を要求します。

DesignModeは、デザイナー モードでこのコードが実行されるかどうかを返します。そのため、if ステートメントの後のコードは、ユーザーに対して実行されることはありません。

チェックDesignModeオプションですが、コードをクリーンに保ち、実行時に冗長なメソッド呼び出しが発生することはありません。

于 2015-06-09T07:26:11.450 に答える
1

試す

someGUIControl.Invalidate();

コントロールを再描画します。

于 2014-01-17T09:29:34.993 に答える