我建立了一个多文档应用程序,在主窗体(frmMain)中定义了公有变量temp,要他与子窗体1(Form1)中的textBox1的文本相等,最后在把这个变量的值赋给子窗体2(Form2)中textBox2。但是在子窗体1中用new把frmMain实例化之后赋值,在子窗体1关闭前,temp的值都正常,但在子窗体1关闭后,temp却变成了null。这是为什么?还有如何解决这个问题?谢谢大家

解决方案 »

  1.   

    主窗体和子窗体分开比如frmMain用作多文档窗体显示,而里面的窗体用frmMdiChild
      

  2.   

    建议使用static变量。数据全局保持。
      

  3.   

    重新定义一个窗体的方法,调用该方法时传入参数,显示子窗体
    void showMe(string param)
    {
      this.text = param;
    ......
      this.show;
    }
      

  4.   

    窗体之间传值,可以用构造函数。窗体Fr_zspzd:
    private void button7_Click(object sender, System.EventArgs e)
    {
    Fr_zspzd zspzd=new Fr_zspzd(this.dataSet11,this.myToolbar1);
    zspzd.Show();
    }窗体Fr_zspzd:
    public class Fr_zspzd : System.Windows.Forms.Form
    {
    DataSet ds1=null;
    myBaseForm.myToolbar myToolbar1;
                      ...........
              public Fr_zspzd(DataSet ds,myBaseForm.myToolbar myToolbar)  //构造函数
    {
    ds1=ds;
    myToolbar1=myToolbar;   //把传递的信息保存下来
                                ........
                       }
              private void Fr_zspzd_Load(object sender, System.EventArgs e)
    {
                                //函数中就可以使用了
                                //传递的值是和第一个页面是同步的
                       }也可以用属性传:
    private void button5_Click(object sender, System.EventArgs e)
    {
    WindowsApplication1.Form2 f2 = new Form2();
    f2.MdiParent=this;
    f2.Show();
    }//-----------------------------------------------
    public class Form2 : System.Windows.Forms.Form
    {
    private Form1 fm1;
    public Form1 Fm1
    {
    get{return fm1;}
    set{fm1=value;}
    }
      

  5.   

    "但是在子窗体1中用new把frmMain实例化之后赋值,"什么意思 啊,怎么还在子窗体中实例话主窗体呢?