现在光标聚焦在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();
}
答案 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)
<Button Focusable="False" />
答案 3 :(得分:-1)
在你的点击事件按钮中你可以做类似
的事情this.textBox.Focus();
如果你的lostfocus方法看起来像这样:
private void UserName_LostFocus(object sender, RoutedEventArgs e){ ... }
您可以使用以下代码阻止丢失的焦点:
this.textBox.LostFocus -= UserName_LostFocus;