WinForm中页面传值的方式

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部分还没完成,有些方面没有搞明白,过段时间再加上。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值