WPFアプリケーションでは、実装認証ロジックが必要です:ユーザーがログインしている場合にのみ、ダイアログボックスで特定のテキストボックスを編集できる必要があります。私が欲しいもの入力フォーカスの変更をキャンセルするにはどうすればよいですか?
は、次の動作です:
ユーザーがログインしている場合、彼はテキストボックスをクリックして、いつものように、その内容を編集 を開始することができます。
ユーザーがログインしていない場合でも、ユーザーはテキストボックスをクリックできるはずですが、ログインダイアログが表示されるはずです。 ログインダイアログを完了した後、彼はテキストボックスに戻り、今度は 編集モードに戻るはずです。ユーザーは(ログインせずに)ログイン・ダイアログをキャンセルした場合
、入力フォーカスは、テキストボックスの内容を編集してから彼を防ぐため、 に をテキストボックスを含むダイアログの[キャンセル]ボタンを移動する必要があります。
private void TextBox_PreviewGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) { bool loggedIn = ExecuteLogin(); //shows the login dialog and returns new login status if (!loggedIn) { CancelButton.Focus(); e.Handled = true; } }
それは確かに限り、ユーザがログイン手続きを完了したが、彼は代わりに、ログインダイアログをキャンセルした場合、それとして正常に動作しない:私はPreviewGotKeyboardFocusイベントにこの方法をフックしようとしている
入力フォーカスをキャンセルボタンに転送しません。さらに、イベントハンドラは複数回呼び出され(ダイアログ内のテキストボックスごとに1回)、システム全体が混乱しているように見えます(アプリケーションが終了するとアプリケーションのプロセスは終了しません。
必要な動作を得るために変更する必要はありますか?
あなたの上質な答えをありがとうございました。私はあなたのコード例を使用し、それは魅力のように動作します。ありがとうございました。 –