Form_main frm = new Form_main(); frm.imageList1.Images.Add(“text”, ico); })); 这是在另一个类中的一个非主线程调用form_main窗口控件的代码,提示出错! |
|
Form_main frm = new Form_main();
frm.imageList1.Images.Add(“text”, ico); ListViewItem item = new ListViewItem (“111”, “text”); frm.listView1.Items.Add(item); 直接这样不行吗?干嘛非得Invoke后又委托一下,不多此一举吗? |
|
这是在非主线程中操作主线程的控件,好像直接调用不安全? |
|
哦,线程里操作吧
那你改成这样试试 Form_main frm = new Form_main(); this.Invoke(new MethodInvoker(delegate() { //do something… frm.imageList1.Images.Add(“text”, ico); ListViewItem item = new ListViewItem (“111”, “text”); frm.listView1.Items.Add(item); })); |
|
你这已经另定义一个form了。怎么会是操作主线程的控件呢? |
|
|
|
40分 |
在主线程里定义个个委托。
在你的类里定义个委托变量,在主线程里为你这个类的委托变量赋值。 然后在你的类里调用这个委托就可以了。 |
我表达的不够准确! |
|
一样的啊。委托处理函数是定义在主线程里的。只是调用下而已。。。
实际上是在主线程里更新的主窗口的控件。 |
|
好的,3q |
|
你的窗体创建出来了,为什么没有使用form的show或者showdiaolog方法呢?
如果调用了的话,应该就不会出错了 |