6

ここに画像の説明を入力

これで、カーソルが TextBox にフォーカスしています。ボタン (RemoveLostFocus) をクリックすると、TextBox の Lost focus イベントが発生します。しかし、必要なのは、 TextBox の Lost Focus イベントが発生しないことです。そうする方法はありますか?

private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        txtUserName.Focus();
    }

private void UserName_LostFocus(object sender, RoutedEventArgs e)
    {
        if (txtUserName.Text.Length < 1)
        {
            MessageBox.Show("UserName should not be empty");
        }
    }

    private void btnCancel_Click(object sender, RoutedEventArgs e)
    {
        this.Close();
                    anotherWindow.Show();
    }
4

4 に答える 4

8

FocusManager添付プロパティを使用して、フォーカスが変更されたTextBoxときにフォーカスを適用する必要があります。Button

例:

<StackPanel>
    <TextBox Name="txtbx" />
    <Button Content="Click Me!" FocusManager.FocusedElement="{Binding ElementName=txtbx}"/>
</StackPanel>

このソリューションでは、が押されてもイベントは発生しませんがTextBox、常にフォーカスされます。ButtonTextBox LostFocus

于 2013-02-28T20:55:59.553 に答える
1

ボタンに Focusable="False" を設定できます。ここに回答のリンクがありますここにリンクの説明を入力してください

于 2015-09-29T22:17:04.167 に答える
-1

あなたのボタンのクリックイベントでは、次のようなことができます

this.textBox.Focus();

lostfocusメソッドが次のようになっている場合:

private void UserName_LostFocus(object sender, RoutedEventArgs e){ ... }

次のコードでロストフォーカスを防ぐことができます。

this.textBox.LostFocus -= UserName_LostFocus;
于 2013-02-28T10:39:57.620 に答える
-1

フォーカス可能なプロパティを設定

<Button Focusable="False" />
于 2013-02-28T10:33:44.923 に答える