问题描述
如:项目中现有个窗体名称为FrmMain这个窗体中个ListBox控件然后FrmMain窗体中调用RunClass类的Run()方法RunClass类如下:其中类中一个启动线程的方法ThreadcstTread;//启动线程的办法publicvoidrun(){cstTread=newThread(newThreadStart(start));cstTread.Start();}//线程中调用的方法publicvoidstart(){while(true){//问题来了,我想要在这里给FrmMain窗体中的ListBox.Item.Add("我要添加数据");(类和窗体必须分开)}}
解决方案
解决方案二:
在线程中访问UI,需要使用委托例如this.Invoke(newAction(()=>{label1.Text=text;}));
解决方案三:
首先,你要在一个类里调用另一个类里的对象,被调用的对象必须是public类型,然后你还要把这个对象传入调用它的类里去其次,跨线程操作UI,需要用委托
解决方案四:
引用楼主Cai_Ethan的回复:
...类和窗体必须分开...
从解耦的角度看,RunClass可以公开一个事件,比如叫OperationProgress事件。感兴趣者,比如FrmMain,可以订阅该事件,并用合适的方式更新UI。
解决方案五:
谢谢各位楼上的回复,小弟已经把问题解决了。
解决方案六:
引用4楼Cai_Ethan的回复:
谢谢各位楼上的回复,小弟已经把问题解决了。
请问你是怎么解决的,能否赐教,谢谢!
时间: 2024-07-29 17:48:27