扩展RadioButton,增加GroupName属性(默认为String.Empty),如果GroupName相同,则不同容器中的RadioButton也可以互斥选择。代码如下:
public class RadioButtonEx : RadioButton
{
private string _groupName = string.Empty;
public string GroupName
{
get { return _groupName; }
set { _groupName = value; }
}
protected override void OnClick(EventArgs e)
{
UnCheckedRadioButton(this.TopLevelControl);
this.Checked = true;
base.OnClick(e);
}
private void UnCheckedRadioButton(Control parent)
{
if (parent != null && parent.Controls.Count > 0)
{
foreach (Control ctl in parent.Controls)
{
UnCheckedRadioButton(ctl);
if (ctl is RadioButtonEx)
{
RadioButtonEx btn = (RadioButtonEx)ctl;
if (btn.GroupName.Equals(this.GroupName))
{
btn.Checked = false;
}
}
}
}
}
}