[英]How to get behavior like a radio button group so only one item can be selected
我做了一个用户控件,并将其放在面板中。 用户控件具有其自己的更改颜色的鼠标单击事件。 如果单击面板上的控件,则希望取消选择其他控件。 像单选按钮一样。 我怎样才能做到这一点?
这是我的面板的图片。 选择了两个用户控件。
public partial class list : UserControl
{
void chgtxt(Label lbl, string s)
{
lbl.Text = s;
}
public list()
{
InitializeComponent();
}
private void panel1_MouseClick(object sender, MouseEventArgs e)
{
panel1.BackColor = Color.Yellow;
chgtxt(label1, "Changed");
}
}
您可以枚举面板的子级,然后取消选择不是当前控件的子级:
foreach (list listControl in Parent.Controls.Cast<Control>().OfType<list>())
{
if (list != this)
{
list.Deselect();
}
}
然后,您只需要在控件上创建Deselect()
方法:
public void Deselect()
{
// Do whatever to show this control as deselected.
}
要扩展itsme86的答案 ,您需要查看控件所属的父控件,然后取消选择列表中的其他项。
public partial class list : UserControl
{
void chgtxt(Label lbl, string s)
{
lbl.Text = s;
}
public list()
{
InitializeComponent();
}
private void panel1_MouseClick(object sender, MouseEventArgs e)
{
panel1.BackColor = Color.Yellow;
chgtxt(label1, "Changed");
if(this.Parent != null)
{
foreach (list listControl in this.Parent.Controls.Cast<Control>().OfType<list>())
{
if (listControl != this)
{
listControl.Deselect();
}
}
}
}
private void Deselect()
{
// Do whatever to show this control as deselected.
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.