C#跨线程访问UI组件

C# 在路上 522次浏览
目前在做的项目有个需求要在子线程中修改winform 页面UI组件的文本内容,题主参考一些博文采用了委托+invoke方法,但是执行到委托方法内部时该组件的InvokeRequired一直为false,所以UI组件无法修改,思索再三无解,挂上来讨教各位前辈
解决方案

10

本人从来不判断

 public void AppendResultText(string txt, string widgetName)
{
 resultTxt.BeginInvoke(new action(()=>{
    resultTxt.AppendText(txt);//增加文本
   resultTxt.ScrollToCaret();//滚动到当前目录
  }));
}

一劳永逸

30

本人知道怎么回事了..
根本不是线程或委托的问题.
原因是你只new from3().xxxx ()但是你根本没有show.
所以form3里面你怎么可能访问控件啊….
我们假设代码没问题..那么你没有show 你能看到控件或窗体吗 所以也没意义啊..
而且本人不确定你按钮的窗体 跟 form3是不是一个.假如不是 那么就是上面的问题.
假如是的话..调用本页面的方法 为什么还要new…..

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C#跨线程访问UI组件
喜欢 (0)or分享 (0)