- - PR -
フォームのActiveControlが変わったときに発生するイベントはありますか
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-03-27 13:19
フォームのActiveControlが変わった(フォーム上のコントロール1のフォーカスがコントロール2に移動した)ときにフォーム側で発生するイベントがあったらどなたか教えていただけますでしょうか。
| ||||||||
|
投稿日時: 2007-03-27 13:35
futa さん、こんにちは。
そのようなイベントは用意されていませんが、自作することはできるかと思います。 たとえば、安易な考えとして UpdateDefaultButton メソッドをオーバーライドするという方法があります。 ただし、UpdateDefaultButton メソッドはコンテナ内において、 'そのコンテナがネストされた数' 連続して発生しますので、ご注意ください。 # もともと、インフラ用のメソッドですので、使い方としては間違っていると思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-03-27 13:49
例えばこんな感じで全てのコントロールのGotFocusイベントを同一のイベントハンドラで処理するとか。
以下の例だと、パネルなどに張り付いたコントロールのイベントは取得できないので工夫してください。
| ||||||||
|
投稿日時: 2007-03-27 14:03
GotFocus イベント...?
無用な補足をしますと、コンテナに子コントロールが含まれる場合のみ再帰させなさい。 ということですね。 # ときに 「言語」 が不明なまま... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-03-27 14:13
試してないので、ダメかもしれませんが、 ActiveControlプロパティをオーバーライドして、 ActiveControlに値が設定される瞬間を押さえるとかどうでしょう。 | ||||||||
|
投稿日時: 2007-03-27 14:15
ヘルプにEnterイベント使えって書いてありますね_| ̄|○ ご指摘ありがとうございます。 | ||||||||
|
投稿日時: 2007-03-27 14:29
どのようにオーバーライド致しましょうか? (^^) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-03-27 15:27
今、速攻で試してみました。ダメでしたorz ヘルプは確認したのですが、見方を間違ってました。 #VBの宣言で「NotOverridable」がないからいけるかな?と・・・<間違い 失礼いたしました。 http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.containercontrol.activecontrol(VS.80).aspx |