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

转载 2013年12月04日 16:56:10

A、网上有很多方法,大家可搜一下,都可用。

B、这里只是说明下是只利用委托,学习基本的委托运用。

方法如下:

1、C#建立一个默认工程,默认窗体Form1

2、加入一个新窗体,默认Form2

3、Form1窗体上放一个Label,一个Button,属性分别为:

this.label1.Text = ""; // 清空label的值

this.button1.Text="otherForm"; //设置button显示为otherForm

 

  1. protected override void OnLoad(EventArgs e)  
  2. {  
  3.     base.OnLoad(e);  
  4.     this.label1.Text = "";  
  5.     this.button1.Text = "otherForm";  
  6. }  

4、Form2窗体上放一个textbox1,一个Button,属性分别为:

this.textbox1.Text = ""; //清空textbox的值

this.button1.Text = "input"; //设置button显示为input(输入)

  1. protected override void OnLoad(EventArgs e)  
  2. {  
  3.     base.OnLoad(e);  
  4.     this.textBox1.Text = "";  
  5.     this.button1.Text = "input";  
  6. }  

5、上面的步骤就建立了两个基本的窗体,接下来回到Form1的代码设计视图

拷贝下面代码

 

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Linq;  
  7. using System.Text;  
  8. using System.Windows.Forms;  
  9.   
  10. namespace WindowsFormsApplication1  
  11. {  
  12.     public partial class Form1 : Form  
  13.     {  
  14.         public Form1()  
  15.         {  
  16.             InitializeComponent();  
  17.         }  
  18.   
  19.         protected override void OnLoad(EventArgs e)  
  20.         {  
  21.             base.OnLoad(e);  
  22.             this.label1.Text = "";  
  23.             this.button1.Text = "otherForm";  
  24.         }  
  25.   
  26.         private void button1_Click(object sender, EventArgs e)  
  27.         {  
  28.             Form2 frm2 = new Form2();  
  29.             returnValueEvent += new returnValue(Form1_returnValueEvent);  
  30.             frm2.Show();  
  31.         }  
  32.   
  33.         void Form1_returnValueEvent(string str)  
  34.         {  
  35.             // throw new NotImplementedException();   
  36.             this.label1.Text = str;  
  37.         }  
  38.   
  39.         // 定义委托   
  40.         public delegate void returnValue(string str);  
  41.         // 委托的事件   
  42.         public static event returnValue returnValueEvent;  
  43.         // 委托的事件的函数   
  44.         public void doReturnValue(string str)  
  45.         {  
  46.             returnValueEvent(str);  
  47.         }  
  48.     }  
  49. }  

6、在Form2的代码设计视图中,拷贝下面代码

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Linq;  
  7. using System.Text;  
  8. using System.Windows.Forms;  
  9.   
  10. namespace WindowsFormsApplication1  
  11. {  
  12.     public partial class Form2 : Form  
  13.     {  
  14.         public Form2()  
  15.         {  
  16.             InitializeComponent();  
  17.         }  
  18.   
  19.         protected override void OnLoad(EventArgs e)  
  20.         {  
  21.             base.OnLoad(e);  
  22.             this.textBox1.Text = "";  
  23.             this.button1.Text = "input";  
  24.         }  
  25.   
  26.         private void button1_Click(object sender, EventArgs e)  
  27.         {  
  28.             Form1 frm1 = new Form1();  
  29.             frm1.doReturnValue(this.textBox1.Text);  
  30.         }         
  31.     }  
  32. }  

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);

运行效果图如下:

效果图

C#窗体间的值传递

  • 2011年05月24日 15:09
  • 75KB
  • 下载

C# 利用接口在窗体间传递消息(很基础很实用)

接口是一组包含了函数型方法的数据结构。通过这组数据结构,客户代码可以调用组件对象的功能。我们在实际开发中,经常要用到在窗体间传递数据。很多情况下,我们用委托把数据从子窗体传递到主窗体,这个例子我们来看...

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

  • 2017年07月24日 22:40
  • 881B
  • 下载

C#中利用委托创建窗体单向通信

C#中利用委托创建窗体单向通信
  • J_Kang
  • J_Kang
  • 2016年05月06日 11:25
  • 1377

C#中多播委托实现多窗体通信

C#多播委托实现多窗体通信
  • J_Kang
  • J_Kang
  • 2016年05月07日 10:21
  • 1016

C#的委托事件在winform窗体中实现传值备忘

用一个例子来说明吧,这样比较好明白一些。就是打开主窗体,datagridview加载了一些数据,然后我们在打开的子窗体中,输入一些条件,让主窗体中的数据随着加载的条件来动态实现加载数据。这就需要涉及到...

C#使用委托创建事件实现两个窗体间通信

实例功能:一个简单的模拟登录窗口,程序运行后首先弹出一个登录对话框,对话框要求输入用户ID和密码,单击登录后主窗体上有两个标签显示登录输入的密码和用户ID;运行效果如下 开始运行 ...
  • yxtouch
  • yxtouch
  • 2014年09月10日 21:29
  • 837

C#委托实现窗体间传值

  • 2010年08月11日 00:28
  • 65KB
  • 下载

C#中使用委托创建事件实现两个窗体间通信

实例功能:一个简单的模拟登录窗口,程序运行后首先弹出一个登录对话框,对话框要求输入用户ID和密码,单击登录后主窗体上有两个标签显示登录输入的密码和用户ID;运行效果如下 开始运行 ...
  • yxtouch
  • yxtouch
  • 2012年10月07日 13:43
  • 1455

C# winform窗体间传值(使用委托或事件)

C# winform窗体间传值(使用委托或事件) 随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#利用委托实现窗体间的值传递 .
举报原因:
原因补充:

(最多只允许输入30个字)