2012-02-23 7 views
0

私はコントロールを作成し、プロパティを追加しています(コントロールの外観はそれに依存します)。どのように私は、このプロパティを設定することができます。再描画せずに初期化コントロールのプロパティ

  1. 私はInitializeComponent()呼び出しの後すぐにフォームコンストラクタでプロパティを設定することはできません。この場合、フォームの初期化の2つのフレームが表示されます。最初はInitializeComponent()の後、2番目のプロパティ設定はコントロールの再描画を呼び出します。悪い。

  2. また、プロパティのタイプを引き起こすBrowsableAttributeで私の諺をマークすることはできません。自分のクラスであり、プロパティウィンドウで設定することはできません。 Аlso悪い。だから、

、どのように私はform1.SuspendLayout()form1.ResumeLayout(false)間の財産をinicializeだろうか?


理想的には、「プロパティウィンドウ」の各フィールドにコードを直接書き込むことができます。たとえば、プロパティのタイプがMyClassの場合、new MyClass(param1, param2)と書きます。

+0

プロパティウィンドウでプロパティを設定できない場合、なぜそれを作成したのですか、コントロールがそれに依存するのはなぜですか? –

+1

これは本当の問題ではありません。ペイントは、コントロールのネイティブウィンドウが作成された後にのみ行われます。フォームコンストラクターの実行が終了した後にうまくいきます。 –

答えて

1

プロパティの変更時にコントロールを再描画するよう強制しないでください。コントロールを初期化するときには不要です。ユーザーがプロパティを変更すると、次のペイントイベントで再描画されます。必要に応じて、ユーザーがプロパティを設定した後で、コントロールで.Refresh()を呼び出して、手動で再描画を強制できます。

関連する問題