c# 遍历控件问题

本人在Form1事件下面写foreach(Controliteminthis.controls)是没一点问题的但是在线程中写的时候报错controls没有被定义谁能知道这... 本人在Form1事件下面写 foreach (Control item in this.controls)是没一点问题的
但是在线程中写的时候 报错 controls没有被定义 谁能知道这是怎么了?
展开
 我来答
dyzeke
2015-01-20 · TA获得超过208个赞
知道小有建树答主
回答量:676
采纳率:60%
帮助的人:322万
展开全部
你的线程在什么地方调用,如果不在Form窗体中调用,那肯定不行啊

看到你在;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;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式