在項目當中有一組選擇項,要求單選並且可以取消,但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; }
源碼下載: