如何获得像单选按钮组这样的行为,因此只能选择一个项目

时间:2016-08-05 20:18:46

标签: c#

我制作了一个用户控件并将其放在面板中。用户控件有自己的鼠标单击事件,可以更改颜色。如果我单击面板上的控件,我希望取消选择其他控件。像单选按钮。我怎样才能做到这一点?

这是我的面板的照片。选择了两个用户控件。

1

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");
    }
}

2 个答案:

答案 0 :(得分:3)

您可以枚举面板的子项并取消选择那些不是当前控件的子项:

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.
}

答案 1 :(得分:0)

要展开itsme86's answer,您需要查看控件所属的父控件,并取消选择列表中的其他项。

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.
    }
}