目前在做的项目有个需求要在子线程中修改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…..
根本不是线程或委托的问题.
原因是你只new from3().xxxx ()但是你根本没有show.
所以form3里面你怎么可能访问控件啊….
我们假设代码没问题..那么你没有show 你能看到控件或窗体吗 所以也没意义啊..
而且本人不确定你按钮的窗体 跟 form3是不是一个.假如不是 那么就是上面的问题.
假如是的话..调用本页面的方法 为什么还要new…..