单击wpf中的按钮时如何避免TextBox丢失焦点?

时间:2013-02-28 10:21:54

标签: wpf textbox

enter image description here

现在光标聚焦在TextBox中。如果我单击按钮(RemoveLostFocus),TextBox的Lost焦点事件将被触发。但我需要的是,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 个答案:

答案 0 :(得分:6)

FocusManager焦点发生变化时,您需要使用TextBox附加属性将焦点应用于Button

示例:

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

使用此解决方案,即使按下TextBox并且Button TextBox事件不会被触发,LostFocus始终会聚焦

答案 1 :(得分:0)

你可以设置Focusable =&#34; False&#34;在按钮上。这是答案enter link description here

的链接

答案 2 :(得分:-1)

设置Focusable Property

<Button Focusable="False" />

答案 3 :(得分:-1)

在你的点击事件按钮中你可以做类似

的事情
this.textBox.Focus();

如果你的lostfocus方法看起来像这样:

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

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

this.textBox.LostFocus -= UserName_LostFocus;