これは、WPF と C# に関連しています。プログラムにいくつかのボタンがあり、それらがクリックされると、イベントを処理した後でも点滅し続けます。たとえば、私が持っているボタンは、ユーザー入力に基づいて新しいウィンドウを開くことになっています。ユーザーの入力が正しくない場合、MessageBox が表示されます。MessageBox を閉じると、ボタンが点滅し始めます。ユーザー入力が正しければ、新しいウィンドウが開きます。新しいウィンドウから古いウィンドウをクリックすると、ボタンが点滅し始めます。新しいウィンドウを閉じると、ボタンが点滅し始めます。
メインウィンドウにフォーカスを当てるために、このボタンに関係するコード全体で this.Focus() を使用してみました。e.Handled = true を使用してみましたが、それを止めるものはないようです。プログラムにアクセスできるようにしたいので、そのプロパティをfalseに設定してボタンをFocusableにしないでください。
何が起こっているのですか?
ボタンの 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;
}
}