簡體   English   中英

設置控件的屬性時,可以在控件名稱中使用字符串嗎?

[英]Can you use a string in the name of the control when setting its property?

我有一個包含很多項目的列表框,每個項目都應該在它旁邊打開一個面板。 單擊一個項目時,它會將其相應的面板置於前面(這些面板都位於同一位置)。

我嘗試使用if語句檢查選定的索引,但這將導致1000的if語句,最終將導致混亂。

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        // gets item text
        string text = listBox1.GetItemText(listBox1.SelectedItem);
        // brings panel to front
        panel**the text string goes here**.BringToFront();
    }

我試圖使用一個變量來獲取所選項目的文本,然后在控件的名稱中使用此變量(類似於如何在字符串中使用變量),但是它對我不起作用。 是否有其他替代方法?

您可以使用Controls.Find()按名稱搜索 Controls.Find() 無論將其嵌套在其他容器中的深度如何,都可以找到它:

if (listBox1.SelectedIndex != -1)
{
    string ctlName = "panel" + listBox1.SelectedItem.ToString();
    Control ctl = this.Controls.Find(ctlName, true).FirstOrDefault();
    if (ctl != null)
    {
        ctl.BringToFront();
    }
}

您可以使用Form對象的控件集合

        var i = this.Controls.IndexOfKey("panel" + text);
        if(i != -1) this.Controls[i].BringToFront();

Wright的語法是

panel1.Controls [(文本)]

文本是您的字符串變量

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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