簡體   English   中英

C#中的動態控件名稱

[英]Dynamic Control names in C#

我正在嘗試以下代碼:

for (int i = 0; i < students.Length; i++)
{
    "student" + i.ToString().Text = students[i];
}

我已經有很多標簽,每個標簽都有這樣的名字:student1 student2 student3。

但我得到了這個錯誤:錯誤1'字符串'不包含'文本'的定義,也沒有擴展方法'文本'接受類型'字符串'的第一個參數可以找到(你是否缺少using指令或程序集引用?)F:\\ Homework \\ Homework \\ Form1.cs 161 46作業

請幫忙嗎??!

您幾乎不能使用任何語言擁有動態變量名稱。

看起來你正在尋找一個集合或控件數組

就像是:

var studentControls = new List<Control>();
studentControls.Add(student1); 
studentControls.Add(student2);
...
for (int i = 0; i < students.Length; i++)
{
    studentControls[i].Text = students[i];
}

使用Controls.Find(“student”+ i.ToString())

這可能有所幫助

Controls.Find(string.Format("student{0}", i));

更好的解決方案:

設置Tag的你財產Labels如下:

Student1.Tag = 1;
Student2.Tag = 2;
Student3.Tag = 3;

我假設您的Labels位於容器控件中,名為container 使用此代碼:

foreach(var item in container.Children) //based on your container type this line may change
{
    if(item is Label)
    {
        Label temp = ((Label)item);
        temp.Text = students[int.Parse(temp.Tag.ToString())]
    }
}

通過執行i.ToString()您將獲得一個字符串,該字符串沒有Text :)屬性。 這就是造成你的例外的原因。

如果Students是具有屬性.Text的控件列表,則使用該屬性並刪除ToString() else,刪除.Text

暫無
暫無

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

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