- PR -

フォームのActiveControlが変わったときに発生するイベントはありますか

投稿者投稿内容
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-03-27 15:47
引用:

よねKENさんの書き込み (2007-03-27 15:27) より:

今、速攻で試してみました。ダメでしたorz
ヘルプは確認したのですが、見方を間違ってました。
#VBの宣言で「NotOverridable」がないからいけるかな?と・・・<間違い


ですよね。(^^)

それ以降の継承下階層でオーバーライドさせないという意味での、NotOverridable ですからね。
確かにわかりにくい言い回しかもしれませんね。
(C# だと sealed、Java Or J# だと final)

--

本題に戻って...

個人的には、burton999 さん案に ControlAdded を考慮したパターンが好きですね。
私の出したパターンは手抜きなので、どうしても工夫が必要になります。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
futa
会議室デビュー日: 2007/03/27
投稿数: 9
投稿日時: 2007-03-27 17:25
皆様いろいろなアイデアどうもありがとうございました。
ActiveControlが変わったときに発生するイベントがないことがわかっただけでも収穫がありました。

私が具体的にやりたいことは、以下のような案件です。
1)Form を継承したFormAを作成し、その中に検索ボタン(F5押下でも可能)をつくります。
2)TextBoxから派生したExTextBox を作成します。
3)FormAから派生したFormBにExTextBoxを貼り付けます。
4)ExTextBoxにフォーカスがある場合のみ、F5押下あるいは検索ボタンクリックで
検索画面を開きます。ただし、その他のコントロールにフォーカスがあるときには
検索ボタンのEnabledをfalseにして利用できないようにしたいのです。

これらの機能をFormBではなくFormAの方に実装したいと考えているのですが、いまひとつよい実装方法が思いつきません。
まだまだ修行不足を痛感しています。
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2007-03-27 17:42
引用:

1)Form を継承したFormAを作成し、その中に検索ボタン(F5押下でも可能)をつくります。
2)TextBoxから派生したExTextBox を作成します。
3)FormAから派生したFormBにExTextBoxを貼り付けます。
4)ExTextBoxにフォーカスがある場合のみ、F5押下あるいは検索ボタンクリックで
検索画面を開きます。ただし、その他のコントロールにフォーカスがあるときには
検索ボタンのEnabledをfalseにして利用できないようにしたいのです。

これらの機能をFormBではなくFormAの方に実装したいと考えているのですが、いまひとつよい実装方法が思いつきません。


FormAはFormBや派生先を知りません。(知りえないし知る必要もありません)
つまり、「ExTextBoxだから」ではなく、FormAの仕様、つまり、検索ボタンの仕様として考える必要があります。
「私は〜を受け取れば〜を返します」を検索ボタンにあてはめると
「私は〜コレクションに存在するコントロールにフォーカスがある場合に有効になります」といったところでしょうか。

具体的には、〜コレクションに相当するものをFormAで公開し派生先で対象コントロールを追加します。
あとは、FormAで〜コレクションに追加されるたびにそのコントロールのEnterとLeaveイベントハンドラを関連付ければよいかと思います。
#コレクションは例です。
#「これを対象コントロールとしてくれ」と要求するメソッドのほうがよいかも。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-03-27 17:54
引用:

futaさんの書き込み (2007-03-27 17:25) より:

私が具体的にやりたいことは、以下のような案件です。
1)Form を継承したFormAを作成し、その中に検索ボタン(F5押下でも可能)をつくります。
2)TextBoxから派生したExTextBox を作成します。
3)FormAから派生したFormBにExTextBoxを貼り付けます。
4)ExTextBoxにフォーカスがある場合のみ、F5押下あるいは検索ボタンクリックで
検索画面を開きます。ただし、その他のコントロールにフォーカスがあるときには
検索ボタンのEnabledをfalseにして利用できないようにしたいのです。



これだけのことであれば、Enter と Leave のイベントだけで実装した方が良いです。
独自のフレームワークは結構ですが、さすがに FormA ではなく FormB に実装すべきだと思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2007-03-27 18:13
引用:

独自のフレームワークは結構ですが、さすがに FormA ではなく FormB に実装すべきだと思います。


ふむふむ。
検索ボタンの仕様上の位置付け次第ですね。
#となれば、検索ボタンの貼り付け場所も変わってくると。

スキルアップ/キャリアアップ(JOB@IT)