在項目當中有一組選擇項,要求單選而且能夠取消,但Winform提供的單選按鈕一旦選擇上就不能取消了,通過研究和測試,總算搞定了功能的要求,主要代碼以下,就不一一說明了,代碼裏有註釋,給有須要的朋友一個參考,Demo在下面。ide
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; }
源碼下載:測試