エクスポート (0) 印刷
すべて展開
この記事は翻訳者によって翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。
訳文
原文

UIElement.LostFocus イベント

UIElement がフォーカスを失ったときに発生します。

名前空間:  System.Windows
アセンブリ :  System.Windows (System.Windows.dll 内)

public event RoutedEventHandler LostFocus
<uiElement LostFocus="eventhandler"/>

LostFocus イベントはバブル イベントです。 これは、オブジェクト ツリーの親子関係によって関連付けられたオブジェクトのシーケンス用に複数の LostFocus イベント ハンドラーが登録されている場合、その親子関係の各オブジェクトによってイベントが受け取られることを意味します。 "バブル" とは、イベントが、入力条件を直接受け取るオブジェクトから始まり、オブジェクト ツリーを順に上っていくようすを表しています。 バブル イベントの場合、イベント ハンドラーに使用できる sender は、イベントが処理されるオブジェクトを識別します。そのオブジェクトは、イベントを開始する入力条件を実際に受け取ったオブジェクトであるとは限りません。 イベントを開始したオブジェクトを見つけるには、イベントの RoutedEventArgs イベント データの OriginalSource 値を使用します。

GotFocus イベントまたは LostFocus イベントを処理しても、イベント データ クラスで Handled プロパティは設定されず、イベントは引き続きオブジェクト ツリーを上方にルーティングし、アタッチされたすべてのハンドラーを起動します。 これは、オブジェクト ツリーのさまざまなレベルでフォーカスを処理する場合、アプリケーションでフォーカス イベントを処理する方法として適切とは限りません。 次の方法のいずれかを使用できます。

  • ブール型のフラグを使用して、フォーカス設定状態を記録します。 イベントを適切に処理した特定のハンドラー呼び出しから、独自の "Handled" 変数を true に設定します。 他のハンドラーでこの "Handled" 変数を確認し、他のハンドラーが既に動作しているかどうか、およびアクションが実行されないかどうかを確認します。 オブジェクト ツリーのルートでは、"Handled" を false に戻して次のフォーカス イベントの状態をクリアするためにフォーカス イベントを処理します。

  • sender およびイベント データ内の OriginalSource によってハンドラーに送信されるオブジェクト値の確認または使用に特に重点を置きます。 senderOriginalSource の場合、または (同じフォーカス イベント ハンドラーが複数のオブジェクトにアタッチされているか、同様の論理的な操作のときに) sender が特定の名前付きオブジェクトの場合のみアクションを実行できます。

Silverlight フォーカス システムの設計上、GotFocus は実際のフォーカスの移動とは非同期的に発生します。 同期的なフォーカスの値を取得するには、FocusManager を使用します。

LostFocus と OnLostFocus

LostFocus を継承するコントロールは、OnLostFocus メソッドをオーバーライドして、すべてのインスタンスのハンドラーとしてイベントを処理できます。 このイベントを直接処理する場合と同様に、Handled プロパティは使用できないため、OnLostFocus の実装で、Handled の手法を使用して以降のイベント処理を抑制することはできません。 ただし、表示状態を設定したり、パブリック プロパティや内部状態プロパティを設定したりするために OnLostFocus を使用することはできます。 たとえば ComboBox では、フォーカスに基づくユーザー入力に従って選択項目を設定するために OnLostFocus が実装されています。 詳細については、OnLostFocus のトピックを参照してください。

Silverlight

サポート対象 : 5、4、3

Silverlight for Windows Phone

サポート対象 : Windows Phone OS 7.1、Windows Phone OS 7.0

Silverlight でサポートされるオペレーティング システムの詳細については、「サポートされているオペレーティング システムとブラウザー」を参照してください。

コミュニティの追加

追加
表示:
© 2015 Microsoft