簡體   English   中英

如何獲得類似單選按鈕組的行為,以便只能選擇一項

[英]How to get behavior like a radio button group so only one item can be selected

我做了一個用戶控件,並將其放在面板中。 用戶控件具有其自己的更改顏色的鼠標單擊事件。 如果單擊面板上的控件,則希望取消選擇其他控件。 像單選按鈕一樣。 我怎樣才能做到這一點?

這是我的面板的圖片。 選擇了兩個用戶控件。

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

您可以枚舉面板的子級,然后取消選擇不是當前控件的子級:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM