c# 遍历控件问题
本人在Form1事件下面写foreach(Controliteminthis.controls)是没一点问题的但是在线程中写的时候报错controls没有被定义谁能知道这...
本人在Form1事件下面写 foreach (Control item in this.controls)是没一点问题的
但是在线程中写的时候 报错 controls没有被定义 谁能知道这是怎么了? 展开
但是在线程中写的时候 报错 controls没有被定义 谁能知道这是怎么了? 展开
1个回答
展开全部
你的线程在什么地方调用,如果不在Form窗体中调用,那肯定不行啊
看到你在;myclass中调用,类中你又没有定义窗体,那里来的控件集合
看到你在;myclass中调用,类中你又没有定义窗体,那里来的控件集合
追问
这属于方法吧 我想把它写在类中 然后再form1中集体调用 或者在类中应该换个方式表达?
追答
你在方法中写一个参数,参数中带上Form窗体
public void TT(Form frm)
{
foreach (Control item in frm.Controls)
{
}
}
如果单线程,在循环里面加你的调用代码就可以了
如果要是多线程调用,你得写成下面的方法调用
看你在循环里面要做什么,如果要调用控件的话,因为多线程
还要调用控件的BeginInvoke
public delegate void MyDelegate(Control ctr, string name);
public void TT(Form frm)
{
foreach (Control item in frm.Controls)
{
if (item.GetType().Name.Contains("Button"))
{
item.BeginInvoke(new MyDelegate(ChangeName), item, "tem" + new Random().Next());
}
}
}
public void ChangeName(Control ctr, string name)
{
ctr.Name = name;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询