18

LostFocusと のLeaveイベントの違いは何TextBoxですか?

4

4 に答える 4

24

これらのリンクのメモ セクションを確認してください。

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:私が追加した引用文のテキストと指標の強調

于 2012-10-12T06:47:02.650 に答える
5

これらは、コントロールのライフサイクルのさまざまな時点で発生します。使用する方法に応じて、検証は の後Leaveと前に行われLostFocusます。

MSDN を参照してください: http://msdn.microsoft.com/en-us/library/system.windows.forms.control.lostfocus.aspx

于 2012-10-12T06:35:51.940 に答える
3

Leave()イベントは、最初にキーボードイベントを実行し、次にマウスイベントを実行することを意味します。一方、Lost()イベントは、最初にマウスイベントを実行し、次にキーボードイベントを実行することを意味します。

于 2012-10-12T07:26:31.883 に答える
0

要約すると、キーボードでは機能しないか、マウスでは機能しません。どの入力方法が使用されるかを予測できないことを考えると、あまり役に立ちません。

しかし、それは私の主張ではありません。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
于 2021-03-29T13:21:17.163 に答える