C#利用委托实现窗体间的值传递 .
A、网上有很多方法,大家可搜一下,都可用。
B、这里只是说明下是只利用委托,学习基本的委托运用。
方法如下:
1、C#建立一个默认工程,默认窗体Form1
2、加入一个新窗体,默认Form2
3、Form1窗体上放一个Label,一个Button,属性分别为:
this.label1.Text = ""; // 清空label的值
this.button1.Text="otherForm"; //设置button显示为otherForm
- protectedoverridevoidOnLoad(EventArgse)
- {
- base.OnLoad(e);
- this.label1.Text="";
- this.button1.Text="otherForm";
- }
4、Form2窗体上放一个textbox1,一个Button,属性分别为:
this.textbox1.Text = ""; //清空textbox的值
this.button1.Text = "input"; //设置button显示为input(输入)
- protectedoverridevoidOnLoad(EventArgse)
- {
- base.OnLoad(e);
- this.textBox1.Text="";
- this.button1.Text="input";
- }
5、上面的步骤就建立了两个基本的窗体,接下来回到Form1的代码设计视图
拷贝下面代码
- usingSystem;
- usingSystem.Collections.Generic;
- usingSystem.ComponentModel;
- usingSystem.Data;
- usingSystem.Drawing;
- usingSystem.Linq;
- usingSystem.Text;
- usingSystem.Windows.Forms;
- namespaceWindowsFormsApplication1
- {
- publicpartialclassForm1:Form
- {
- publicForm1()
- {
- InitializeComponent();
- }
- protectedoverridevoidOnLoad(EventArgse)
- {
- base.OnLoad(e);
- this.label1.Text="";
- this.button1.Text="otherForm";
- }
- privatevoidbutton1_Click(objectsender,EventArgse)
- {
- Form2frm2=newForm2();
- returnValueEvent+=newreturnValue(Form1_returnValueEvent);
- frm2.Show();
- }
- voidForm1_returnValueEvent(stringstr)
- {
- //thrownewNotImplementedException();
- this.label1.Text=str;
- }
- //定义委托
- publicdelegatevoidreturnValue(stringstr);
- //委托的事件
- publicstaticeventreturnValuereturnValueEvent;
- //委托的事件的函数
- publicvoiddoReturnValue(stringstr)
- {
- returnValueEvent(str);
- }
- }
- }
6、在Form2的代码设计视图中,拷贝下面代码
- usingSystem;
- usingSystem.Collections.Generic;
- usingSystem.ComponentModel;
- usingSystem.Data;
- usingSystem.Drawing;
- usingSystem.Linq;
- usingSystem.Text;
- usingSystem.Windows.Forms;
- namespaceWindowsFormsApplication1
- {
- publicpartialclassForm2:Form
- {
- publicForm2()
- {
- InitializeComponent();
- }
- protectedoverridevoidOnLoad(EventArgse)
- {
- base.OnLoad(e);
- this.textBox1.Text="";
- this.button1.Text="input";
- }
- privatevoidbutton1_Click(objectsender,EventArgse)
- {
- Form1frm1=newForm1();
- frm1.doReturnValue(this.textBox1.Text);
- }
- }
- }
7、运行后,就可以在两个窗体间传递参数了
注:重点是第六步中的,对委托的定义和调用
returnValueEvent += new returnValue(Form1_returnValueEvent);
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);
}
在Form2中的调用,在按钮的click事件中
Form1 frm1 = new Form1();
frm1.doReturnValue(this.textBox1.Text);
运行效果图如下:
A、网上有很多方法,大家可搜一下,都可用。
B、这里只是说明下是只利用委托,学习基本的委托运用。
方法如下:
1、C#建立一个默认工程,默认窗体Form1
2、加入一个新窗体,默认Form2
3、Form1窗体上放一个Label,一个Button,属性分别为:
this.label1.Text = ""; // 清空label的值
this.button1.Text="otherForm"; //设置button显示为otherForm
- protectedoverridevoidOnLoad(EventArgse)
- {
- base.OnLoad(e);
- this.label1.Text="";
- this.button1.Text="otherForm";
- }
4、Form2窗体上放一个textbox1,一个Button,属性分别为:
this.textbox1.Text = ""; //清空textbox的值
this.button1.Text = "input"; //设置button显示为input(输入)
- protectedoverridevoidOnLoad(EventArgse)
- {
- base.OnLoad(e);
- this.textBox1.Text="";
- this.button1.Text="input";
- }
5、上面的步骤就建立了两个基本的窗体,接下来回到Form1的代码设计视图
拷贝下面代码
- usingSystem;
- usingSystem.Collections.Generic;
- usingSystem.ComponentModel;
- usingSystem.Data;
- usingSystem.Drawing;
- usingSystem.Linq;
- usingSystem.Text;
- usingSystem.Windows.Forms;
- namespaceWindowsFormsApplication1
- {
- publicpartialclassForm1:Form
- {
- publicForm1()
- {
- InitializeComponent();
- }
- protectedoverridevoidOnLoad(EventArgse)
- {
- base.OnLoad(e);
- this.label1.Text="";
- this.button1.Text="otherForm";
- }
- privatevoidbutton1_Click(objectsender,EventArgse)
- {
- Form2frm2=newForm2();
- returnValueEvent+=newreturnValue(Form1_returnValueEvent);
- frm2.Show();
- }
- voidForm1_returnValueEvent(stringstr)
- {
- //thrownewNotImplementedException();
- this.label1.Text=str;
- }
- //定义委托
- publicdelegatevoidreturnValue(stringstr);
- //委托的事件
- publicstaticeventreturnValuereturnValueEvent;
- //委托的事件的函数
- publicvoiddoReturnValue(stringstr)
- {
- returnValueEvent(str);
- }
- }
- }
6、在Form2的代码设计视图中,拷贝下面代码
- usingSystem;
- usingSystem.Collections.Generic;
- usingSystem.ComponentModel;
- usingSystem.Data;
- usingSystem.Drawing;
- usingSystem.Linq;
- usingSystem.Text;
- usingSystem.Windows.Forms;
- namespaceWindowsFormsApplication1
- {
- publicpartialclassForm2:Form
- {
- publicForm2()
- {
- InitializeComponent();
- }
- protectedoverridevoidOnLoad(EventArgse)
- {
- base.OnLoad(e);
- this.textBox1.Text="";
- this.button1.Text="input";
- }
- privatevoidbutton1_Click(objectsender,EventArgse)
- {
- Form1frm1=newForm1();
- frm1.doReturnValue(this.textBox1.Text);
- }
- }
- }
7、运行后,就可以在两个窗体间传递参数了
注:重点是第六步中的,对委托的定义和调用
returnValueEvent += new returnValue(Form1_returnValueEvent);
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);
}
在Form2中的调用,在按钮的click事件中
Form1 frm1 = new Form1();
frm1.doReturnValue(this.textBox1.Text);
运行效果图如下: