日期:2014-05-17  浏览次数:20981 次

C#利用委托实现窗体间的值传递

C#利用委托实现窗体间的值传递

?A、网上有很多方法,大家可搜一下,都可用。
B、这里只是说明下是只利用委托,学习基本的委托运用。
方法如下:
1、C#建立一个默认工程,默认窗体Form1
2、加入一个新窗体,默认Form2
3、Form1窗体上放一个Label,一个Button,属性分别为:
this.label1.Text = ""; // 清空label的值
this.button1.Text="otherForm"; //设置button显示为otherForm
?
view plaincopy to clipboardprint?
protected override void OnLoad(EventArgs e)??
{??
??? base.OnLoad(e);??
??? this.label1.Text = "";??
??? this.button1.Text = "otherForm";??
}?
??????? protected override void OnLoad(EventArgs e)
??????? {
??????????? base.OnLoad(e);
??????????? this.label1.Text = "";
??????????? this.button1.Text = "otherForm";
??????? }
4、Form2窗体上放一个textbox1,一个Button,属性分别为:
this.textbox1.Text = ""; //清空textbox的值
this.button1.Text = "input"; //设置button显示为input(输入)
view plaincopy to clipboardprint?
protected override void OnLoad(EventArgs e)??
{??
??? base.OnLoad(e);??
??? this.textBox1.Text = "";??
??? this.button1.Text = "input";??
}?
??????? protected override void OnLoad(EventArgs e)
??????? {
??????????? base.OnLoad(e);
??????????? this.textBox1.Text = "";
??????????? this.button1.Text = "input";
??????? }
5、上面的步骤就建立了两个基本的窗体,接下来回到Form1的代码设计视图
拷贝下面代码
?view plaincopy to clipboardprint?
using System;??
using System.Collections.Generic;??
using System.ComponentModel;??
using System.Data;??
using System.Drawing;??
using System.Linq;??
using System.Text;??
using System.Windows.Forms;??
?
namespace WindowsFormsApplication1??
{??
??? public partial class Form1 : Form??
??? {??
??????? public Form1()??
??????? {??
??????????? InitializeComponent();??
??????? }??
?
??????? protected override void OnLoad(EventArgs e)??
??????? {??
??????????? base.OnLoad(e);??
??????????? this.label1.Text = "";??
??????????? this.button1.Text = "otherForm";??
??????? }??
?
??????? private void button1_Click(object sender, EventArgs e)??
??????? {??
??????????? Form2 frm2 = new Form2();??
??????????? returnValueEvent += new returnValue(Form1_returnValueEvent);??
??????????? frm2.Show();??
??????? }??
?
??????? void Form1_returnValueEvent(string str)??
??????? {??
??????????? // throw new NotImplementedException();??
??????????? this.label1.Text = str;??
??????? }??
?
??????? // 定义委托??
??????? public delegate void returnValue(string str);??
??????? // 委托的事件??
??????? public static event returnValue returnValueEvent;??
??????? // 委托的事件的函数??
??????? public void doReturnValue(string str)??
??????? {??
??????????? returnValueEvent(str);??
??????? }??
??? }??
}?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
??? public partial class Form1 : Form
??? {
??????? public Form1()
??????? {
??????????? InitializeComponent();
??????? }
??????? protected override void OnLoad(EventArgs e)
??????? {
??????????? base.OnLoad(e);
??????????? this.label1.Text = "";
??????????? this.button1.Text = "otherForm";
??????? }
??????? private void button1_Click(object sender, EventArgs e)
??????? {
??????????? Form2 frm2 = new Form2();
??????????? returnValueEvent += new returnValue(Form1_returnValueEvent);
??????????? frm2.Show();
??????? }
??????? void Form1_returnValueEvent(string str)
??????? {
??????????? // throw new NotImplementedException();
??????????? this.label1.Text = str;
??????? }
??????? // 定义委托
??????? public delegate void returnValue(string str);
??????? // 委托的事件
??????? public static event returnValue returnValueEvent;
??????? // 委托的事件的函数
??????? public