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附加的属性将焦点应用于焦点更改TextBoxButton

例子:

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

使用此解决方案,TextBox即使Button按下 并且TextBox LostFocus不会触发事件,The 也将始终保持焦点

于 2013-02-28T20:55:59.553 回答
1

您可以在按钮上设置 Focusable="False"。这是答案的链接 在此处输入链接描述

于 2015-09-29T22:17:04.167 回答
-1

设置焦点属性

<Button Focusable="False" />
于 2013-02-28T10:33:44.923 回答
-1

在您的按钮的 Click-Event 中,您可以执行类似的操作

this.textBox.Focus();

如果你的 lostfocus-method 看起来像这样:

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

您可以使用以下代码防止丢失焦点:

this.textBox.LostFocus -= UserName_LostFocus;
于 2013-02-28T10:39:57.620 回答