2017-03-28 21 views
0

私はTextBoxを持っており、ユーザーがTextBoxを離れるときに内容を保存したい。 PreviewLostKeyboardFocusを使用する予定でしたが、意図したとおりに動作しません。私は、同じアプリケーションの内部に別のコントロールをクリックすると WPF:この動作は意図されていますか? PreviewLostKeyboardFocusとLostKeyboardFocus

<TextBox PreviewLostKeyboardFocus="textBox2_PreviewLostKeyboardFocus" 
     LostKeyboardFocus="textBox2_LostKeyboardFocus" /> 

は、私が最初にPreviewLostKeyboardFocusイベントと、その後LostKeyboardFocusイベントを取得します。しかし、別のアプリケーションをアクティブにすると、PreviewLostKeyboardFocusイベントは発生しません。私はLostKeyboardFocusだけを取得します。

答えて

0

これは予期された動作です。

他のアプリケーションに切り替えると、PreviewLostKeyboardFocusイベントは発生しません。

最初の場所でイベントを処理する主な目的は、変化するからキーボードフォーカスを防ぐためです:https://msdn.microsoft.com/en-us/library/system.windows.input.keyboard.previewlostkeyboardfocus(v=vs.110).aspx

そして、あなたは別のアプリケーションに切り替えたときにイベントが発生した場合は、キーボードを予防することができるだろうこのイベントを処理することによってフォーカスを変更し、KeyboardFocusChangedEventArgsHandledプロパティをtrueに設定すると、アプリケーションの実行中にユーザーが画面上に他の要素をフォーカスすることができなくなります。

+0

ドキュメントで、別のアプリケーションに切り替えるときにそれが発生しないことが記載されていますか? ---しかし、他のアプリケーションがフォーカスを得る前に、フォーカスを失ったかどうかを調べるために使用できるメカニズムやイベントはありますか? TextBoxの内容をファイルに保存して、別のテキストエディタで変更を検出できるようにするためです。例えばNotepad ++は、更新されたファイルがフォーカスを受け取ったときだけチェックします。 –

+0

コメントに追加質問はしないでください。別の問題がある場合は別の質問をしてください。しかし、LostKeyboardFocusイベントの処理はどうですか?または、ウィンドウまたはアプリケーションのDeactivatedイベント(https://msdn.microsoft.com/en-us/library/system.windows.application.deactivated.aspx)を処理できます。 – mm8

+0

また、役に立つ回答を投票することを忘れないでください:) http://stackoverflow.com/help/privileges/voteup – mm8

関連する問題