[英]Changing Control property in foreach loop
我試圖強制啟用TableLayoutPanel
中的控件(我之前分別禁用了控件)。
使用此代碼不會更改任何內容(我記得foreach不會影響正在循環的項目!)。 我猜應該有一些強制轉換或使其起作用的方法:
foreach(Control ctrl in myTable.Controls)
{
ctrl.Enabled = true;
}
myTable
本身位於另一個表中...如果需要指出。 我要再次啟用的控件的類型為TextBox
和DomainUpDown
。
這是一個示例,顯示您可以按期望的方式調整屬性。 但是您不能更改要對其自身進行迭代的引用。 試試看,看看是否可以澄清。
public class BasicClass
{
public int BasicProperty { get; set; }
}
class Program
{
static void Main(string[] args)
{
List<BasicClass> lst = new List<BasicClass>();
lst.Add(new BasicClass {BasicProperty=5});
lst.Add(new BasicClass { BasicProperty = 6 });
foreach (var item in lst)
{
item.BasicProperty++;
}
Console.WriteLine("{0}, {1}", lst[0].BasicProperty, lst[1].BasicProperty);
Console.ReadLine();
}
}
盡管看起來如此, TableLayout
並不是控件容器。 因此,您應該迭代其他一些容器來查找控件。
//MyparentControl is the parent control of myTable
//so assuming 0 is the index of "myTable"
for (int h = 0; h < MyparentControl.Controls[0].Controls.Count; h++)
{
MyparentControl.Controls[0].Controls[h].Enabled = true;
}
非常抱歉打擾一下……顯然在after了幾個小時后,我發現問題出在表中,原因是表本身在代碼中的某處設置為Enabled = false
。 我已經解決了,問題就解決了。 感謝大家的投入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.