Winform 可取消的单选按钮(RadioButton)

在项目当中有一组选择项,要求单选并且可以取消,但Winform提供的单选按钮一旦选择上就不能取消了,经过研究和测试,总算搞定了功能的要求,主要代码如下,就不一一说明了,代码里有注释,给有需要的朋友一个参考,Demo在下面。

private bool checkedStatus = false;
        /// <summary>
        /// 当前按钮选择状态,true已选择
        /// </summary>
        public bool CheckedStatus
        {
            get {
                return checkedStatus;
            }
            set {
                checkedStatus = value;
            }
        }

        public VoidableRadioButton()
            : base()
        { }

        protected override void OnCheckedChanged(EventArgs e)
        {
            base.OnCheckedChanged(e);
            if (!this.Checked)
            {
                checkedStatus = false;
            }
        }

        protected override void OnClick(EventArgs e)
        {
            base.OnClick(e);
            if (checkedStatus)
            {
                this.Checked = false;
                //Checked=false触发了CheckedChanged,所以这里应该把状态重置为true
                checkedStatus = true;
            }
            checkedStatus = !checkedStatus;
        }
View Code

源码下载:

VoidableRadioButton

原文地址:https://www.cnblogs.com/zhaoblogs/p/3232327.html