回答一个给10分!
全局变量?结构体?还是构造函数?举例说明,大家都学习下!! 
顶~~~~~~~~~~~~~~~~~~~~~~~~~~

解决方案 »

  1.   

    其实跨窗体传参很简单.
    父窗体Form1
    子窗体Form2
    class Form2
    {
         private Form1 _frm1;
         public Form1 Frm1
         {
                 get{return _frm1;}
                 set{this._frm1 = value;}
         }
    ----------------------------------------------
    class Form1
    {
         string s;
         void SetString(string str)
         {
              s = str;
         }
    }    override onclosing方法,或者添加FormClosing事件都可以...
            在里边添加Form1的中的函数
            _frm1.SetString("aaaaa");
    }
    如果是想在Form2关闭的时候,把值传给Form1,那Form1可以做个方法来接收SetString()方法,就自由发挥了.
    我的空间也有例子  可以去看下.
    推荐使用这种方法...那种全局的方法,根本谈不上安全性.这种发放一定要掌握. 
      

  2.   

    PS:以下由Ctrl+C和Ctrl+V完成,^_^C#窗体间传值的几种方法
    调用窗体(父):Form1,被调用窗体(子):Form2
    方法1: 所有权法
    //Form1:
    //需要有一个公共的刷新方法
    public void Refresh_Method()
    {
    //...
    }
    //在调用Form2时,要把Form2的所有者设为Form1
    Form2 f2 = new Form2() ;
    f2.Owner = this;
    f2.ShowDialog() ;
    //Form2:
    //在需要对其调用者(父)刷新时
    Form1 f1 ;
    f1 = (Form1)this.Owner;
    f1.Refresh_Method() ;
    方法2:自身传递法
    //Form1:
    //需要有一个公共的刷新方法
    public void Refresh_Method()
    {
    //...
    }
    Form2 f2 = new Form2() ;
    f2.ShowDialog(this) ;
    //Form2:
    private Form1 p_f1;
    public Form2(Form1 f1)
    {
    InitializeComponent();
    p_f1 = f1;
    }
    //刷新时
    p_f1.Refresh_Method() ;
    方法3:属性法
    //Form1:
    //需要有一个公共的刷新方法
    public void Refresh_Method()
    {
    //...
    }
    //调用时
    Form2 f2 = new Form2() ;
    f2.P_F1 = this;
    f2.Show() ;//Form2:
    private Form1 p_f1;
    public Form1 P_F1
    {
    get{return p_f1;}
    set{p_f1 = value;}
    }
    //刷新时
    p_f1.Refresh_Method() ;
    方法4:委托法
    //声明一个委托
    public delegate void DisplayUpdate();
    //Form1:
    //需要有一个公共的刷新方法
    public void Refresh_Method()
    {
    //...
    }
    //调用时
    Form2 f2 = new Form2() ;
    f2.ShowUpdate += new DisplayUpdate(Refresh_Method) ;
    f2.Show() ;
    //Form2:
    //声明事件
    public event DisplayUpdate ShowUpdate;
    //刷新时,放在需要执行刷新的事件里
    ShowUpdate();
    Form1中放一个Label1,一个Button1,Form1为主窗口,当点击Button1时,执行:
    Form2 f2 = new Form2();
    f2.ShowDialog(this);Form2中放一个TextBox1,一个Button1,当点击Button1时执行:Form1 f1 = (Form1)this.Owner;
    f1.Label1.Text = this.TextBox1.Text;注意:Form1中的label1要设为public用C#实现两个WinForm间的传值这个题目我曾经出给来公司面试的人,也曾经出给刚毕业的大学生,几乎是没有人会做啊。难道这个问题真的这么难么?现在我给出实现的主要源代码(开发平台为VC#2005)。实现的思路:
         从Form1传递到Form2: 2个窗体即两个类,两个窗体间的数据传送,可以采用构造函数来实现。     从Form2返回到Form1,并传递数据:实例化Form2后,打f2用ShowDialog()方法,然后等待f2关闭时再回传数据到Form1。实现步骤及代码:      1:新建两个窗口: Form1,Form2;
          2:打开Form2,添加一个textBox:textBox1;添加一个Button:button1;然后添加一个构造函数:
            //定义一个变量,用来传值。
            public string returnValue ;        public Form2(string txtValue)
            {
                InitializeComponent();            this.textBox1.Text = txtValue;
            }
    然后在button1的单击事件中添加如下代码:
            private void button1_Click(object sender, EventArgs e)
            {
                returnValue = this.textBox1.Text;
                this.Close();
            }      3:Form1中添加一个textBox:textBox1;添加一个Button:button1;然后在button1的单击事件中添加如下代码:
            private void button1_Click(object sender, EventArgs e)
            {
                string txtValue = this.textBox1.Text;
                Form2 f2 = new Form2(txtValue);
                f2.ShowDialog();
                this.textBox1.Text = f2.returnValue;
            }Form1 中 (父窗口:) 
    public class Form1 : System.Windows.Forms.Form
    {
          private System.Windows.Forms.Button btnOpen;
          public System.Windows.Forms.TextBox txtContent; //注意是public       ........       ........      [STAThread]
         static void Main()
         {
              Application.Run(new Form1());
         }    private void btnOpen_Click(object sender, System.EventArgs e)
        {
           Form2 frm=new Form2(this);
           frm.ShowDialog();
        }}Form2中(子窗口)public class Form2 : System.Windows.Forms.Form
    {
               private System.Windows.Forms.Button button1;
               private System.Windows.Forms.TextBox txtValue;           private Form _parentForm=null;
           public Form2()
           {   
                InitializeComponent(); 
           }      public Form2(Form parentForm)
          {
              InitializeComponent();
              this._parentForm =parentForm;
          }           ........          ........
       //更新父窗口中文本框中的值!     private void button1_Click(object sender, System.EventArgs e)
         {
               ((Form1)_parentForm).txtContent.Text =this.txtValue .Text ;
         }
      

  3.   

    窗体A:
    public static string str;
    str="赋值"窗体B:
    string 变量 = 窗体A.str;
      

  4.   

    两个窗体传递数据 不是很复杂的 但方式很多静态类
    public static class UserData
    {
      public static DataTable m_Table;
    }
    在使用的时候 UserData.DataTable 就可以了构造
    修改Form2的构造方法
    public DataTable m_Table;
    public Form2(DataTable p_Table)
    {
       InitializeComponent();
       m_Table=p_Table;
    }
    在new Form2的时候  new Form2(你要传递的DataTable);
    tag
    Form2 _Form2 =new Form2();
    _Form2.Tag =你要传递的DataTable;
    在使用的时候  DataTable _Table =(DataTable)this.Tag;Public 
    在Form1 里定义 public DataTable m_Table;
    在Form2里只要获取到Form1的实例就可以了
    例如 在Form2里
    Form1 _Form1 =(Form1)Application.OpenForms["Form1"];
    _Form1.m_Table...另外委托和事件也是不错的选择