为了账号安全,请及时绑定邮箱和手机立即绑定

在单选按钮中检测更改源(用户或程序)

在单选按钮中检测更改源(用户或程序)

C#
蝴蝶不菲 2021-07-06 13:38:12
我正在尝试设置一个标志,说明该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内部工作原理的更多信息,请查看其源代码。


查看完整回答
反对 回复 2021-07-10
  • 1 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信