MDIの子フォームでフォーカスアウトを制御したい
MDIの子フォームでフォーカスアウトを制御したい
VB2005で開発を行っています。
・MDIの子フォームA、Bが存在します。
・子フォームA、Bともに、表示されています。
・子フォームAにはテキストコントロールAA、ABの2つが存在します。
・テキストコントロールAAのLostFocus()に、テキストコントロールAA.Focus()が
記されています。
この状態で、子フォームAのテキストコントロールAAからABへフォーカスが移った時、
コントロールAAのLostFocus()で制御するのはうまくいきます。
が、子フォームAのテキストコントロールAAから子フォームBへフォーカスが移った時、
コントロールAAのLostFocus()が動作しますが、無限ループっぽい動きに陥ったり、
子フォームAにフォーカスが設定されません。
子フォームを最小化させたり、全然関係のないアプリケーションやデスクトップに
フォーカスを遷移したあとにフォーカスを戻してみても同じような現象になります。
イメージとしては、フォーカスアウトでエラーになったんだから、フォーカスを移し
たくないです。
Private Sub ControlAA_LostFocus(ByVal sender As System.Object, ByVal e As System.EventArgs)
If "".Equals(ControlAA.Text) Then
MessageBox.Show("hoge")
ControlAA.Focus()
Return
End If
End Sub
フォーカスアウト時に項目チェックなどをやる関係で、どうしてもLostFocus()上で
処理をやらなければならないと思われるのですが、フォーカスアウトされた時のオペ
レーションの違いに限らず上手く制御させる方法はありませんでしょうか?
調べてはみましたが、MDIの概念でそもそもそういうことするなというような事らしいですが、
フォーカスアウト時に検索処理が走るというような仕様の為、どうしても解決させたいです。
お礼
解決しました