【发布时间】:2018-05-29 20:04:25
【问题描述】:
我正在尝试设置一个标志,说明 Checked 属性的最后一次更改是由用户还是程序引起的。
我正在使用自定义RadioButton:
public class MyRadioButton : RadioButton
{
ValueChanger valueChanger = ValueChanger.Program;
public MyRadioButton()
{
this.Click += OnButtonClickedByUser;
this.CheckedChanged += OnCheckChange;
}
public void setChecked(bool val)
{
this.valueChanger = ValueChanger.Program;
this.Checked = val;
}
void OnButtonClickedByUser(Object sender, EventArgs e)
{
this.valueChanger = ValueChanger.User;
}
void OnCheckChange(Object sender, EventArgs e)
{
// do stuff depending on 'this.valueChanger'
}
enum ValueChanger
{
User,
Program
};
}
每当由于从串行连接接收到消息而更改值时,我都会调用 setChecked,并且我希望在通过 UI 更改值时,Click 事件会调用 OnButtonClickedByUser。
我的问题是CheckedChanged 事件在Click 事件之前触发,这使得OnCheckChange 不可靠。
有什么办法可以解决吗?
【问题讨论】:
标签: c# .net winforms radio-button