如下代码是在同一个窗体类中,试了可以实现。
public partial class Form1 : Form 

delegate void SetTextCallback(string text);//声明更新控件用的代理委托 private void SetlbSendStatuText(string text)//定义更新控件的方法 

            if (this.lbSendStatu.InvokeRequired)//lbSendStatu为主窗体中一个label控件 
            { 
                SetTextCallback d = new SetTextCallback(SetlbSendStatuText); 
                this.Invoke(d, new object[] { text }); 
            } 
            else 
            { 
                this.lbSendStatu.Text = text; 
            } 

private void myThread()//自定义线程 

  this.SetlbSendStatuText("要更新的肉容"); 


请问(1)线程信息都封装在另一个类里面,在该类中如何调用委托修改界面控件的属性?是否在该类中还要创建窗体类的实例?

解决方案 »

  1.   

    线程信息都封装在另一个类里面
    ==============================
    你都是在一个类里的啊,class Form1 .不需要在创建实例了.你可以跟踪以下,其实你调this.SetlbSendStatuText("要更新的肉容");  
    这个方法的时候,该方法是执行了2次的了.
    第一次是判断inovkerequired,
    然后再有执行一次
      

  2.   

    低价转让:中#美#爱#梯#科技.Net软件工程师培训课程内容(共35G),声音清晰,课程完整!
    需要这个培训视频的朋友请联系 QQ 936652114
      

  3.   

    在构造函数或者窗体Load的代码里添加下面一句可以省得用委托了。 Control.CheckForIllegalCrossThreadCalls = False
      

  4.   

    我只是以此做个同类的例子,而我的程序中有四个独立的线程类,所以才有上面的提问。至于wzuomin的Control.CheckForIllegalCrossThreadCalls = False,
    个人认为不是安全的,不然2.0也不会严格控制了,故可以实现但不可取。感谢兄弟姐妹们的关注。