- - PR -
フォームのActiveControlが変わったときに発生するイベントはありますか
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-03-27 15:47
ですよね。(^^) それ以降の継承下階層でオーバーライドさせないという意味での、NotOverridable ですからね。 確かにわかりにくい言い回しかもしれませんね。 (C# だと sealed、Java Or J# だと final) -- 本題に戻って... 個人的には、burton999 さん案に ControlAdded を考慮したパターンが好きですね。 私の出したパターンは手抜きなので、どうしても工夫が必要になります。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-03-27 17:25
皆様いろいろなアイデアどうもありがとうございました。
ActiveControlが変わったときに発生するイベントがないことがわかっただけでも収穫がありました。 私が具体的にやりたいことは、以下のような案件です。 1)Form を継承したFormAを作成し、その中に検索ボタン(F5押下でも可能)をつくります。 2)TextBoxから派生したExTextBox を作成します。 3)FormAから派生したFormBにExTextBoxを貼り付けます。 4)ExTextBoxにフォーカスがある場合のみ、F5押下あるいは検索ボタンクリックで 検索画面を開きます。ただし、その他のコントロールにフォーカスがあるときには 検索ボタンのEnabledをfalseにして利用できないようにしたいのです。 これらの機能をFormBではなくFormAの方に実装したいと考えているのですが、いまひとつよい実装方法が思いつきません。 まだまだ修行不足を痛感しています。 | ||||
|
投稿日時: 2007-03-27 17:42
FormAはFormBや派生先を知りません。(知りえないし知る必要もありません) つまり、「ExTextBoxだから」ではなく、FormAの仕様、つまり、検索ボタンの仕様として考える必要があります。 「私は〜を受け取れば〜を返します」を検索ボタンにあてはめると 「私は〜コレクションに存在するコントロールにフォーカスがある場合に有効になります」といったところでしょうか。 具体的には、〜コレクションに相当するものをFormAで公開し派生先で対象コントロールを追加します。 あとは、FormAで〜コレクションに追加されるたびにそのコントロールのEnterとLeaveイベントハンドラを関連付ければよいかと思います。 #コレクションは例です。 #「これを対象コントロールとしてくれ」と要求するメソッドのほうがよいかも。 | ||||
|
投稿日時: 2007-03-27 17:54
これだけのことであれば、Enter と Leave のイベントだけで実装した方が良いです。 独自のフレームワークは結構ですが、さすがに FormA ではなく FormB に実装すべきだと思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-03-27 18:13
ふむふむ。 検索ボタンの仕様上の位置付け次第ですね。 #となれば、検索ボタンの貼り付け場所も変わってくると。 |