WinForm程序的主窗体 MainForm 上有个 Label 控件。建一个其他的类 比如说 Class1.cs
这个类里有个方法 ChangeText() 用来改变 MainForm 里 Label 控件的值的请问该怎么写啊?更深入点的问题:如果ChangeText()是在另外一个线程里执行的话 
能改变吗? 

解决方案 »

  1.   

    public class Class1
    {
    //调用 new Class1(this.label1).ChangeText();
    private Label _lable;
    public Class1(Label lable)
    {
    this._lable=lable;
    }
    public void ChangeText()
    {
    this._lable.Text="jinjazz";
    }
    }
      

  2.   

    假如ChangeText()在另一个线程上执行的话,还得用Invoke进行线程切换
      

  3.   

    更新ui的话,最好在UI的线程中去作。
    你可以使用BeginInvoke这样的方法。
      

  4.   

    jinjazz(近身剪(充电中...)) :不是在主窗体里调用Class1的方法。
    是在Class1里的方法ChangeText()调用主窗体的Label控件 并改变它的值。
    private void ChangeText()
    {
      //在这里改变主窗体的Label值。
    } conan19771130(努力工作) :
    刚才试着把主窗体里的Label声明改成static了,编译都通不过。
      

  5.   

    汗!我以前都没用过WINFORM还要用 Invoke 看来真麻烦啊
      

  6.   

    在主窗体上生明一个静态变量
    public static MainForm mf;
    然后在主窗体的构造中写
    mf=this;
    同时把主窗体上的控件如Label的Modifiers属性设为public 或internal
    在你的类Class1中就可以调用了。
    MainForm.mf.lable1.Text="";
    就可以这样访问主窗体上的控件了
      

  7.   

    many ways. but the most stable way i think is IPC. use win32 api by sending message to main form.