如何检查是否手动单击了控件
本文关键字:单击 控件 是否 何检查 检查 | 更新日期: 2023-09-27 18:08:55
我有一个ToggleButton
与这个结构:
<ToggleButton Focusable="False" Width="19" Height="19" x:Name="tbBtn" Checked="ToggleButton_Checked" Unchecked="ToggleButton_Unchecked"/>
现在我的目标是检入ToggleButton_Checked
事件,如果用户手动单击了这个事件,或者我通过代码触发了这个事件。
IsChecked
属性,如下所示:
tbBtn.IsChecked = true;
Is possible check in the sender:
private void ToggleButton_Checked(object sender, RoutedEventArgs e)
{
//perform check
}
此事件是手动触发还是设置在代码后面?也许这是sender中我不知道的属性?
尝试如下:
ToggleButton button = sender as ToggleButton;
其他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事件。
<ToggleButton x:Name ="tbBtn" Content="Test" Click="ToggleButton_Click"></ToggleButton>
代码后面;
public MainWindow()
{
InitializeComponent();
tbBtn.IsChecked = true;
}
private void ToggleButton_Click(object sender, RoutedEventArgs e)
{
var tb = sender as ToggleButton;
if(tb != null)
{
if(tb.IsChecked.HasValue && tb.IsChecked.Value)
{
Debug.WriteLine("AlreadyChecked");
}
}
}
使用类级别变量来跟踪它。因此,代码应该是
ClickedFromCode = true;
tbBtn.IsChecked = true;
ClickedFromCode = false;
同一变量可用于从代码中触发的多个事件。现在捕获
中的布尔值private void ToggleButton_Checked(object sender, RoutedEventArgs e)
{
//perform check
if (ClickedFromCode)
{ //do something
}
else
{ //do something
}
}