[英]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.