WPFウィンドウでToggleButton
を使用しています:
<ToggleButton Height="37"
HorizontalAlignment="Left"
Margin="485.738,254.419,0,0"
VerticalAlignment="Top"
Width="109"
IsEnabled="True"
Checked="toggleAPDTimeoutErr_Checked"
Unchecked="toggleAPDTimeoutErr_Unchecked">Timeout</ToggleButton>
監視している2つのイベントがありますが、これはハンドラの背後にある2つの異なるコードで行われます。これを1つだけで実行するにはどうすればよいですか?
ToggleButton
sはたくさんあり、コードが大きくなる可能性があります。
ToggleButton
のシングルクリックイベントをアタッチし、そのハンドラーでToggleButton
IsChecked
プロパティを確認するには、次のようにハンドラーで送信者オブジェクトを型キャストします。
private void ToggleButton_Click(object sender, RoutedEventArgs e)
{
if((sender as ToggleButton).IsChecked)
{
// Code for Checked state
}
else
{
// Code for Un-Checked state
}
}
XAML:
<ToggleButton Height="37" HorizontalAlignment="Left" Margin="485.738,254.419,0,0" VerticalAlignment="Top" Width="109" IsEnabled="True" Click="ToggleButton_Click">Timeout</ToggleButton>
いくつかの回答が示唆するように、Click
イベントは使用しないでください。プロパティIsChecked
がコードまたはマウス以外のイベント(キーボード、アニメーションなど)によって変更されると機能しません。これは単なるバグです。
代わりに、Checked
とUnchecked
の両方に同じハンドラーを使用し、IsChecked
プロパティに応じてアクションを実行できます。
<ToggleButton
Checked="toggleButton_IsCheckedChanged"
Unchecked="toggleButton_IsCheckedChanged" />
これを試して
private void tBtn_super_Click(object sender, RoutedEventArgs e)
{
if (tBtn_super.IsChecked == true)
{
MessageBox.Show("True");
}
else
{
MessageBox.Show("False");
}
}