【发布时间】:2020-09-28 20:58:56
【问题描述】:
我正在开发一个 winform c# 应用程序。在这个应用程序中,我使用的是 Checkbox(准确地说是 JCS.ToggleSwitch)。
我添加了一个CheckedChanged 事件来在复选框被选中时执行一些代码。
我希望能够在不触发此CheckedChanged 事件中的代码的情况下更改代码中复选框的状态。为了做到这一点,我想知道是否有可能知道复选框状态是否由于代码或用户单击复选框而发生更改。
我尝试使用发件人DummyCheckbox_CheckedChanged(object sender, EventArgs e) 检测到这一点,但是,当状态从一段代码或 UI 更改时,发件人是相同的。
您知道是否可以仅在用户更新复选框时执行我的代码?
private JCS.ToggleSwitch DummyCheckbox;
this.DummyCheckbox= new JCS.ToggleSwitch();
this.DummyCheckbox.CheckedChanged += new JCS.ToggleSwitch.CheckedChangedDelegate(this.DummyCheckbox_CheckedChanged);
private void DummyCheckbox_CheckedChanged(object sender, EventArgs e)
{
if(???) //CheckState has been changed from UI
{
if(DummyCheckbox.Checked)
{
//Code 1
}
else
{
//Code 2
}
}
else //CheckState has been changed because of code "DummyCheckbox.Checked = true"
{
//Code 3
}
}
【问题讨论】:
-
这能回答你的问题吗? Differentiate between a user changing the Checkbox.Checked value, or it programmatically changing。您可以使用标志,删除处理程序,然后将其添加回来或使用一些反射。