LostFocus
と のLeave
イベントの違いは何TextBox
ですか?
4 に答える
これらのリンクのメモ セクションを確認してください。
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.lostfocus.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.leave.aspx
MSDN によると、コントロールのフォーカスを変更するときに違いがあります。Leave
イベントは検証前に発生し、検証後に発生LostFocus
します。
更新: 2019 年 2 月 14 日
数年前に投稿した回答に対して、まだ意見や支持を得ているようです。Focus
新しいプログラマーの混乱を避けるために、上記の MSDN リンクからの (かなり重要な) 引用を含めることが不可欠になりました (特に、マウスを使用するかメソッドを呼び出してフォーカスする場合の順序の違いに注意してください)。
キーボード(TAB、SHIFT + TAB など) を使用するか、Select メソッドまたは SelectNextControl メソッドを呼び出すか、ContainerControl.ActiveControl プロパティを現在のフォームに設定してフォーカスを変更すると、次の順序でフォーカス イベントが発生します。
Enter GotFocus Leave <--- before validation Validating -- |<--- validation Validated -- LostFocus <--- after validation
マウスを使用するか、Focus メソッドを呼び出してフォーカスを変更すると、次の順序でフォーカス イベントが発生します。
Enter GotFocus LostFocus <--- before validation Leave <--- before validation Validating -- |<--- validation Validated --
NB:私が追加した引用文のテキストと指標の強調
これらは、コントロールのライフサイクルのさまざまな時点で発生します。使用する方法に応じて、検証は の後Leave
と前に行われLostFocus
ます。
MSDN を参照してください: http://msdn.microsoft.com/en-us/library/system.windows.forms.control.lostfocus.aspx
Leave()イベントは、最初にキーボードイベントを実行し、次にマウスイベントを実行することを意味します。一方、Lost()イベントは、最初にマウスイベントを実行し、次にキーボードイベントを実行することを意味します。
要約すると、キーボードでは機能しないか、マウスでは機能しません。どの入力方法が使用されるかを予測できないことを考えると、あまり役に立ちません。
しかし、それは私の主張ではありません。LostFocus はフォームのロード時に発生しますが、Leave は発生しません。
これにより、フォームが読み込まれると、テキスト ボックスが黄色になります。
Private Sub txtBox_LostFocus(sender As Object, e As EventArgs) Handles TextBox.LostFocus
txtBox.BackColor = Color.Yellow
End Sub
これはそうではありません。
Private Sub txtBox_TextLeave(sender As Object, e As EventArgs) Handles TextBox.Leave
txtBox.BackColor = Color.Yellow
End Sub