Keyboard.LostKeyboardFocus 添付イベント

定義

要素がキーボード フォーカスを失ったときに発生します。

see AddLostKeyboardFocusHandler, and RemoveLostKeyboardFocusHandler
see AddLostKeyboardFocusHandler, and RemoveLostKeyboardFocusHandler
see AddLostKeyboardFocusHandler, and RemoveLostKeyboardFocusHandler

次の例では、 をTextBox作成し、 イベントと イベントのイベント ハンドラーをLostKeyboardFocusGotKeyboardFocusアタッチします。 TextBoxがキーボード フォーカスを取得すると、背景色が変更され、 TextBox のテキストがクリアされます。 がキーボード フォーカスを TextBlock 失うと、背景色が変更され、サンプルで使用される変数をリセットする メソッドが呼び出されます。

<Border BorderBrush="Black" BorderThickness="1"
        Width="200" Height="100" Margin="5">
  <StackPanel>
    <Label HorizontalAlignment="Center" Content="Type Text In This TextBox" />
    <TextBox Width="175"
             Height="50" 
             Margin="5"
             TextWrapping="Wrap"
             HorizontalAlignment="Center"
             VerticalScrollBarVisibility="Auto"
             GotKeyboardFocus="TextBoxGotKeyboardFocus"
             LostKeyboardFocus="TextBoxLostKeyboardFocus"
             KeyDown="SourceTextKeyDown"/>
  </StackPanel>
</Border>
private void TextBoxGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
    TextBox source = e.Source as TextBox;

    if (source != null)
    {
        // Change the TextBox color when it obtains focus.
        source.Background = Brushes.LightBlue;

        // Clear the TextBox.
        source.Clear();
    }
}
Private Sub TextBoxGotKeyboardFocus(ByVal sender As Object, ByVal e As KeyboardFocusChangedEventArgs)
    Dim source As TextBox = TryCast(e.Source, TextBox)

    If source IsNot Nothing Then
        ' Change the TextBox color when it obtains focus.
        source.Background = Brushes.LightBlue

        ' Clear the TextBox.
        source.Clear()
    End If
End Sub
private void TextBoxLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
    TextBox source = e.Source as TextBox;

    if (source != null)
    {
        // Change the TextBox color when it loses focus.
        source.Background = Brushes.White;

        // Set the  hit counter back to zero and updates the display.
        this.ResetCounter();
    }
}
Private Sub TextBoxLostKeyboardFocus(ByVal sender As Object, ByVal e As KeyboardFocusChangedEventArgs)
    Dim source As TextBox = TryCast(e.Source, TextBox)

    If source IsNot Nothing Then
        ' Change the TextBox color when it loses focus.
        source.Background = Brushes.White

        ' Set the  hit counter back to zero and updates the display.
        Me.ResetCounter()
    End If
End Sub

注釈

これは添付イベントです。 WPF は、ルーティング イベントとして添付イベントを実装します。 アタッチされたイベントは、基本的には、そのイベントを定義しないオブジェクトで処理できるイベントを参照するための XAML 言語の概念であり、WPF はイベントがルートを通過できるようにすることで拡張されます。 アタッチされたイベントには、コード内の直接処理構文がありません。コード内のルーティング イベントのハンドラーをアタッチするには、指定された Add*Handler メソッドを使用します。 詳細については、「 添付イベントの概要」を参照してください。

キーボード フォーカスは、キーボード入力を受け取っているオブジェクトを指します。 キーボード フォーカスを持つ 要素が にtrue設定されていますIsKeyboardFocused。 デスクトップ全体にキーボード フォーカスがある要素は 1 つだけです。 論理フォーカスとは、フォーカスがあるフォーカススコープ内のオブジェクトを指します。 フォーカス、キーボード フォーカス、論理フォーカスの詳細については、「 入力の概要 」と「 フォーカスの概要」を参照してください。

PreviewGotKeyboardFocusイベントまたはイベントがPreviewLostKeyboardFocus処理された場合、キーボード フォーカスは変更されません。

ルーティングされたイベント情報

識別子フィールド LostKeyboardFocusEvent
ルーティング戦略 バブル
代理人 KeyboardFocusChangedEventHandler

適用対象