2009-04-30 18 views
0

WinFormsコントロールには、コンテナがコントロールを初期化した後でハンドラーを追加したいと思います。WinFormsコントロール - アクションが完全に初期化された後

理由:カスタムコントロールには、アクションを自動的にトリガするオプションがあります。このオプションが最初に有効になっているときにもトリガする必要があります。

しかし、この時点では他のプロパティ(イベントハンドラなど)は正しく配線されていないため、期待どおりの効果が得られません。

これは可能ですか?

[編集]

私は、これは「少し珍しい」に聞こえることを理解し、私は明確にしたい:

それはthis componentを対象としています。大体、「自動的に新しいを作成するオプションを追加資料"。

初期化中にDocumentInfo自体を作成することもできますし、プロパティを初期化中に割り当てることもできます。しかし、この時点では、UIを更新する必要があることを伝えるイベント(通常は親フォーム)を起動する必要があります。イベントがまだ配線されていないか、他のコントロールが初期化されていないため、親フォームが完全に初期化されるまでイベントを延期したいのです。

答えて

1

私が知っている唯一のことは、コントロール内から直接これを行うことで、OnVisibleChangedをオーバーライドして初めてア​​クションを処理することですコントロールが表示されます。

しかし、私はこれの必要性を再考するでしょう。これにより、コントロールが標準のWindowsフォームコントロールとは異なる動作をするようになります。ノンスタンダードのイベントにあなたの行動をフックしようとすると、私にメンテナンスと使い勝手の悪夢のように思えます...

+0

これは次の目的のために用意されています:http://www.codeproject.com/KB/menus/fileselect.aspx 大まかに、「新しい文書を自動的に作成する」というオプションを追加する – peterchen

+0

フォームを読み込んだ後に何を追加しようとしていますか?代わりに初期化時にデフォルトで作成してから、デザイン時にカスタマイズすることはできますか?それはより理解できるアプローチのようです。 –

+0

私はあなたの心配を参照して、私は質問を更新しました、おそらくそれはそれを明確にします。 – peterchen

3

フォームのLoadイベントまで配線して作業しましたか? (これはフォームを表示するたびに発生します)...

+0

「表示」は.Visible = false/.Visible = trueですか? – peterchen

+0

Formオブジェクトが作成されたときに一度だけ実行する場合は、InitializeComponent呼び出しの後にFormのコンストラクタに配置します。 –

+0

@ダン・C .:残念ながら、このアプローチは、彼が彼が望んでいるもの(私は信じている)であるコンポーネント自体にそれを置くことはできません。 –