当前位置:编程学习 > C#/ASP.NET >>

在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(); --------------------编程问答-------------------- ...很简单


...
string value = "new label string";
if(label1.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate(){label1.Text = value;label1.Refresh();}));
}
else 
{
label1.Text = value;
label1.Refresh();
}
...
--------------------编程问答-------------------- 6楼的方法是正确的,我试过了!楼主快结贴
补充:.NET技术 ,  .NET Framework
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,