我正在尝试设置一个标志,说明该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每当由于从串行连接收到消息而更改值时,我都会调用,并且我希望OnButtonClickedByUser在Click通过 UI 更改值时由事件调用。我的问题是CheckedChanged事件在事件之前触发Click,这使得OnCheckChange不可靠。有什么办法可以解决这个问题吗?
1 回答
RISEBY
TA贡献1856条经验 获得超5个赞
用户可以RadioButton通过单击控件或将焦点移动到控件(箭头键、选项卡、助记键组合)来更改 的值。
双方OnEnter并ProcessMnemonic尝试拨打PerformClick该电话OnClick,其负责人向检查控制。所以你可以覆盖OnClick方法:
protected override void OnClick(EventArgs e)
{
// Here CheckedChanged event has not been raised yet
base.OnClick(e);
}
要了解有关RadioButton内部工作原理的更多信息,请查看其源代码。
- 1 回答
- 0 关注
- 120 浏览
添加回答
举报
0/150
提交
取消