请问:线程每向一个控件传递数据,就要写一个invoke传递数据吗?
我现在有10个label,分别表示线程中不个不同数据的反馈,我该怎么办?同样的代码写10次吗?
// 创建代理
delegate void setTextCallBack(String text); //调用窗体中的invode函数传递参数
private void setText(String text)
{
if (this.label1.InvokeRequired)
{
setItemCallBack b = new setItemCallBack(setText);
this.Invoke(b, new object[] { text});
}
else
{
this.lable1.text = text;
}
}
为了能适合操作多个label,我增加了一个参数。 // 创建代理
delegate void setTextCallBack(Label lbl, String text); //调用窗体中的invode函数传递参数
private void setText(Label lbl, String text)
{
if (lbl.InvokeRequired)
{
setTextCallBack b = new setTextCallBack(setText);
this.Invoke(b, new object[] { text });
}
else
{
lbl.Text = text;
}
}程序华丽的出错了 提示“参数计数不匹配”
我现在有10个label,分别表示线程中不个不同数据的反馈,我该怎么办?同样的代码写10次吗?
// 创建代理
delegate void setTextCallBack(String text); //调用窗体中的invode函数传递参数
private void setText(String text)
{
if (this.label1.InvokeRequired)
{
setItemCallBack b = new setItemCallBack(setText);
this.Invoke(b, new object[] { text});
}
else
{
this.lable1.text = text;
}
}
为了能适合操作多个label,我增加了一个参数。 // 创建代理
delegate void setTextCallBack(Label lbl, String text); //调用窗体中的invode函数传递参数
private void setText(Label lbl, String text)
{
if (lbl.InvokeRequired)
{
setTextCallBack b = new setTextCallBack(setText);
this.Invoke(b, new object[] { text });
}
else
{
lbl.Text = text;
}
}程序华丽的出错了 提示“参数计数不匹配”
把要显示的数据封装到一个类中,
然后再调用,可以减少代码
你那样做是报错,呵呵this.Invoke只能传递一个参数
this.Invoke(b, new object[] { lbl, text }); //<-------
-->
this.Invoke(b, new object[] { lbl, text });怀疑楼主要么是粗心,要么就是不知道这个代码到底什么含义和功能才行,只是依葫芦画瓢,一改就出低级错误