[リストへもどる]
一括表示

投稿時間:2003/12/17(Wed) 16:32
投稿者名:はこ
Eメール:
URL :
タイトル:
TextboxのGotFocusについて
いつもお世話になってます。

フォームに2つのTextboxを配置して、Text1からText2にフォーカスが
移動したときに、MsgBoxを表示させようとしています。

Private Sub Text1_LostFocus()
    MsgBox "Text1 LostFocus!"
End Sub

Private Sub Text2_GotFocus()
    MsgBox "Text2 GotFocus!"
End Sub

ところがなぜかText1からText2にフォーカスを移動させても
Text2のGotFocusイベントが発生しません。
(カーソルはText2に移動しています)

さらになぜかText1のLostFocusイベントでMsgBoxの表示を
コメントアウトするとText2のGotFocusイベントが発生します。

原因がわかる方いらっしゃいましたら教えてください。
よろしくお願いします。

環境:WindowsXP SP1
   Visual Basic 6.0 SP5

投稿時間:2003/12/17(Wed) 17:01
投稿者名:ak
Eメール:
URL :
タイトル:
Re: TextboxのGotFocusについて
> いつもお世話になってます。
>
> フォームに2つのTextboxを配置して、Text1からText2にフォーカスが
> 移動したときに、MsgBoxを表示させようとしています。
>
> Private Sub Text1_LostFocus()
>     MsgBox "Text1 LostFocus!"
> End Sub
>
> Private Sub Text2_GotFocus()
>     MsgBox "Text2 GotFocus!"
> End Sub
>
> ところがなぜかText1からText2にフォーカスを移動させても
> Text2のGotFocusイベントが発生しません。
> (カーソルはText2に移動しています)
>
> さらになぜかText1のLostFocusイベントでMsgBoxの表示を
> コメントアウトするとText2のGotFocusイベントが発生します。
>
> 原因がわかる方いらっしゃいましたら教えてください。
> よろしくお願いします。
>
> 環境:WindowsXP SP1
>    Visual Basic 6.0 SP5

Validateイベントを使用してみてください。
サンプルを記述しておきます。
注: テキストのCausesValidation プロパティをTrueに設定してください。

Private Sub Text1_Validate(Cancel As Boolean)
    If MsgBox("移動しますか?", vbYesNo, "Text1") = vbNo Then
        Cancel = True
    End If
End Sub

Private Sub Text2_GotFocus()
    MsgBox "フォーカスを受け取りました。", vbOKOnly, "Text2"
End Sub

投稿時間:2003/12/17(Wed) 17:46
投稿者名:はこ
Eメール:
URL :
タイトル:
Re^2: TextboxのGotFocusについて
akさん

サンプルまで作っていただいてありがとうございます。
やっぱりValidateイベントを使わないとダメなんですかね。

ただやっぱりLostFocusでは何がいけないのかが気になりますよね。

投稿時間:2003/12/17(Wed) 17:08
投稿者名:nanashi
Eメール:
URL :
タイトル:
Re: TextboxのGotFocusについて
メッセージボックスにフォーカスが取られてるからじゃないですかね?
正直、あんまり詳しい原因って言うのは分かりませんが……。

試しにこのMsgBox関数をDebug.Printに変えるとキチンとLostFocusとGotFocusを通っているのが分かると思います。

投稿時間:2003/12/17(Wed) 17:50
投稿者名:はこ
Eメール:
URL :
タイトル:
Re^2: TextboxのGotFocusについて
nanashiさん

お返事ありがとうございます。

そうなんですよー。
MsgBoxさえなければうまく動くんですよね。

それにしてもLostFocusでMsgBoxを出しても、その後
カーソルはちゃんと次のコントロールに移動している
のに、どうしてGotFocusが上がらないんでしょうかね。

私の方でももうちょっと調べてみます。