在BackgroundWorker的ProgressChanged事件中修改Label的Text属性值不能即时显示
我想在BackgroundWorker的ProgressChanged事件中修改Label的Text属性值以给用户一个文本的动态提示,可为什么只有在DoWork事件中的操作完成后才能在界面上看到Label的Text属性值,,而且在执行DoWork事件时,BackgroundWorker所在窗体不能移动,感觉BackgroundWorker根本没有异步执行我的操作。 --------------------编程问答-------------------- 路过帮顶=============
11月6日,论坛升级公告,积分已经做了调整!
http://topic.csdn.net/u/20081107/11/b27dc75f-14b1-4594-9de3-5b18d9e36a11.html
此次调整增加了两个新的可用分获取渠道:
1:帖子被推荐(加精)后,帖主可以获得88分的可用分奖励;
2:帖子结帖后会返还帖主50%的悬赏分,无满意结帖不返还分数;
3:接下来会不断增加新的可用分获取途径,比如参与活动赠送等,请大家多关注; --------------------编程问答-------------------- 应该不会,代码有问题,贴出来看看 --------------------编程问答-------------------- 跨线程访问控件的问题。Label是在主线程创建的。 --------------------编程问答-------------------- private void SetLabelText(string info)
{
if (label1.InvokeRequired)
{
BeginInvoke(new SetSizeMethodInvoker(SetLabelTextCore), info);
}
else
{
SetLabelTextCore(info);
}
}
public delegate void SetLabelTextMethodInvoker(string info);
privaet void SetLabelTextCore(string info)
{
label1.Text = info;
}
这么做应该就可以了。 --------------------编程问答-------------------- label1.update(); --------------------编程问答-------------------- ...很简单
--------------------编程问答-------------------- 6楼的方法是正确的,我试过了!楼主快结贴
...
string value = "new label string";
if(label1.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate(){label1.Text = value;label1.Refresh();}));
}
else
{
label1.Text = value;
label1.Refresh();
}
...
补充:.NET技术 , .NET Framework