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の概念でそもそもそういうことするなというような事らしいですが、
フォーカスアウト時に検索処理が走るというような仕様の為、どうしても解決させたいです。
No.1ベストアンサー
- 回答日時:
> フォーカスアウト時に項目チェックなどをやる関係で、どうしてもLostFocus()上で
> 処理をやらなければならないと思われるのですが、フォーカスアウトされた時のオペ
> レーションの違いに限らず上手く制御させる方法はありませんでしょうか?
Validatingイベントを使えばいいってことでは。
この回答への補足
e.Cancel = True
ということですよね?
これをしても、確かにコントロールにフォーカスがあたっているのですが、
子フォーム自体がアクティブ状態にならず、全てが解決するような動作とは
なってくれませんでした。
それと子フォームのせいなのか、LostFocus()内でコントロールへフォーカス
セットしているせいなのか、LostFocus()がやたら頻繁に動作し、
Validating()イベントを記せば解決するようではないようです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
名古屋の栄と錦は治安悪い?
-
VB.NETのテキストボック...
-
テキストボックスからフォーカ...
-
vba メモリーリーク
-
『μg』の読み方と意味。
-
コンピュータ言語paythonのエデ...
-
TextBoxにカーソルがあるかない...
-
VB.NET でのLaod/unLoad につ...
-
友達がたこ焼きを上に投げて口...
-
word
-
数式中の文字をCambria Math以...
-
illustratorとExcelは連携出来...
-
Excel VBAで改行を含む文字列を...
-
PowerPoint SmartArtの箇条書...
-
Illustratorテキストエリアへ塗...
-
googleサーチコンソールでの重...
-
画像からテキストデータを正確...
-
ASP.NET 動的コントロールのフ...
-
ユーザーがクリックするまでフ...
-
イラレでダブルクリックで文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
名古屋の栄と錦は治安悪い?
-
『μg』の読み方と意味。
-
NumericUpDownの数値を選択済み...
-
VB.NET でのLaod/unLoad につ...
-
テキストボックスからフォーカ...
-
VB.NETのテキストボック...
-
項目数は英語で
-
mailの送信音がしなくなったの...
-
シリアル通信について
-
vba メモリーリーク
-
CPUを2個搭載できるマザーボー...
-
フォームを開く時のイベント処理
-
TextBoxにカーソルがあるかない...
-
一部の文字のみ文字化けします
-
スマホが水に濡れてしまい、中...
-
C++の例外処理
-
PDFの余白、黄ばみ除去等の加工...
-
ob_start()した後、ob_flush()...
-
ヒント表示について
-
シリアルフラッシュメモリをな...
おすすめ情報