http://www.cnblogs.com/moss_tan_jun/archive/2011/06/12/2078971.html
WinForm中的窗体传值有多种方法,自己结合相关资料总结了一下,大概有5种方式(或者更多): 1、通过 ShowDialog()进行传值; 2、通过改造构造函数进行传值(加参数); 3、通过公共静态类进行传值; 4、通过绑定事件进行传值; 5、使用Attribute(本人属初学,尚需深入研究,希望高手给与指正) 代码如下: 主窗体代码:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WinTestValue ...{ public partial class Main : Form ...{ public Main() ...{ InitializeComponent(); F004_ComonClass fc = new F004_ComonClass(); fc.Show(); } 方法1:通过ShowDialog进行页面传值#region 方法1:通过ShowDialog进行页面传值 private void btn_ok_Click(object sender, EventArgs e) ...{ F001_ShowDialog fs = new F001_ShowDialog(); if (fs.ShowDialog() == DialogResult.OK) ...{ this.tbx_value.Text = F001_ShowDialog.returnValue; MessageBox.Show("从F002_ShowDialog传值到Main窗体成功!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); } } private void btn_ok1_Click(object sender, EventArgs e) ...{ F001_ShowDialog fs = new F001_ShowDialog(); if (fs.ShowDialog() == DialogResult.OK) ...{ this.tbx_value.Text = fs.ReturnValue(); MessageBox.Show("从F002_ShowDialog传值到Main窗体成功!", "Success1", MessageBoxButtons.OK, MessageBoxIcon.Information); } } private void btn_ok2_Click(object sender, EventArgs e) ...{ F001_ShowDialog fs = new F001_ShowDialog(); if (fs.ShowDialog() == DialogResult.OK) ...{ this.tbx_value.Text = fs.RValue; MessageBox.Show("从F002_ShowDialog传值到Main窗体成功!"); } } #endregion 方法2: 通过构造函数进行页面传值#region 方法2: 通过构造函数进行页面传值 private void btn_gouzao_Click(object sender, EventArgs e) ...{ F002_GouZao gz = new F002_GouZao(this); gz.Show(); } #endregion //定义textbox属性 public TextBox Tvalue ...{ get ...{ return this.tbx_value; } } private void btn_cancel_Click(object sender, EventArgs e) ...{ this.Close(); } 方法4:通过绑定事件进行传值#region 方法4:通过绑定事件进行传值 private void btn_event_Click(object sender, EventArgs e) ...{ F003_Event fe = new F003_Event(); fe.myenent +=new MyEventHandler(fe_myenent); fe.ShowDialog(); } private void fe_myenent(object sender, MyEvent e) ...{ this.tbx_value.Text += e.MValue; } #endregion 方法3:通过公共静态类进行传值#region 方法3:通过公共静态类进行传值 private void btnComDate_Click(object sender, EventArgs e) ...{ //F004_ComonClass fc = new F004_ComonClass(); //fc.ShowDialog(); this.tbx_value.Text = ComonData.sTextBox; } #endregion 方法5:使用Attribute#region 方法5:使用Attribute protected override void WndProc(ref Message m) ...{ if (m.Msg = "") ...{ } base.WndProc(ref m); } #endregion } } F001_ShowDialog的代码: public partial class F001_ShowDialog : Form ...{ //第一种类型 //定义一个变量 public static string returnValue; //第二种类型 //定义一个方法 public string ReturnValue() ...{ return this.tbx_value.Text.Trim(); } //第三种类型 //定义一个属性 private string _value; public string RValue ...{ get ...{ return _value; } set ...{ _value = value; } } public F001_ShowDialog() ...{ InitializeComponent(); } private void btn_ok_Click(object sender, EventArgs e) ...{ returnValue = this.tbx_value.Text.Trim(); } private void btn_ok1_Click(object sender, EventArgs e) ...{ _value = this.tbx_value.Text.Trim(); } } F002_GouZao的代码: public partial class F002_GouZao : Form ...{ //定义Main窗体的实例 private Main main; //public F003_GouZao() //{ // InitializeComponent(); //} public F002_GouZao(Main m) ...{ InitializeComponent(); main = m; } private void btn_ok_Click(object sender, EventArgs e) ...{ main.Tvalue.Text = this.tbx_value.Text.Trim(); MessageBox.Show("成功!"); } } F004_ComonClass的代码: public partial class F004_ComonClass : Form ...{ public F004_ComonClass() ...{ InitializeComponent(); //ComonData.sTextBox = this.tbxInfo.Text.Trim().ToString(); } private void btn_data_Click(object sender, EventArgs e) ...{ ComonData.sTextBox = this.tbxInfo.Text.Trim().ToString(); } } F003_Event的代码: public partial class F003_Event : Form ...{ //定义一个事件 public event MyEventHandler myenent; public F003_Event() ...{ InitializeComponent(); } private void btn_ok_Click(object sender, EventArgs e) ...{ if (myenent != null) ...{ myenent(this,new MyEvent(this.tbx_value.Text.Trim())); } } } 自定义的委托和事件的代码: public delegate void MyEventHandler(object sender, MyEvent e); public class MyEvent : EventArgs ...{ private string mvalue; public string MValue ...{ get ...{ return mvalue; } } public MyEvent(string s) ...{ mvalue = s; } } // 定义一个公共数据类 public static class ComonData ...{ public static string sTextBox; } Attribute部分还没完成,有些方面没有搞明白,过段时间再加上。