这与 WPF 和 C# 有关。我的程序中有几个按钮,当它们被点击时,即使在处理完事件后它们也会继续闪烁。例如,我拥有的按钮应该根据用户输入打开一个新窗口。如果用户输入不正确,MessageBox 会出现这样的提示。关闭 MessageBox 后,按钮开始闪烁。如果用户输入正确,将打开新窗口。一旦我从新窗口点击到旧窗口,按钮开始闪烁;如果我关闭新窗口,按钮开始闪烁。
我尝试在涉及此按钮的代码中使用 this.Focus() 来获得主窗口的焦点。我尝试使用 e.Handled = true,但似乎没有什么能阻止它。我不想通过将该属性设置为 false 来使按钮不可聚焦,因为我希望我的程序可以访问。
有什么想法吗?
这是我的按钮的 XAML 代码:
<Button x:Name="btnSearch" Content="Search" Background="#4a89be" Foreground="White"
MouseEnter="Button_MouseEnter" MouseLeave="Button_MouseLeave"
Click="btnSearch_Click" />
按钮的 C# 代码(这没有 this.Focus() 因为它对我不起作用):
private void btnSearch_Click(object sender, RoutedEventArgs e)
{
if (!String.IsNullOrEmpty(txtNumber.Text.ToString()) && txtNumber.Text.ToString().Length >= 10)
{
if (QueryWindow == null)
{
QueryWindow = new DatabaseQueryWindow();
QueryWindow.Show();
QueryWindow.Closed += new EventHandler(QueryWindow_Closed);
}
else if (QueryWindow != null && !QueryWindow.IsActive)
{
QueryWindow.Activate();
}
QueryDB();
}
else
{
MessageBox.Show("Please enter a valid # (Format: YYYYmm####)");
}
}
void QueryWindow_Closed(object sender, EventArgs e)
{
QueryWindow = null;
}
private void Button_MouseEnter(object sender, MouseEventArgs e)
{
Button b = sender as Button;
if (b != null)
{
b.Foreground = Brushes.Black;
}
}
private void Button_MouseLeave(object sender, MouseEventArgs e)
{
Button b = sender as Button;
if (b != null)
{
b.Foreground = Brushes.White;
}
}