C# 委托和事件 实现窗体间的通信

例子 : 点击form1上的按钮打开form2窗口,在form2窗体中的文本框中输入一个值后,在点击form2窗体中按钮,在form2中的文本框中输入的值也会在form1中的文本框中出现。

form1:

public partial class Form1 : Form

{
             public Form1()
            {
               InitializeComponent();
            }

private void textBox1_TextChanged(object sender, EventArgs e)
           {

}

private void button1_Click(object sender, EventArgs e)
           {
               Form2 frm = new Form2();
               frm.Text_event += new Form2.Text_delegate(getData);
               frm.ShowDialog();
            }

public void getData()
            {
                textBox1.Text = Form2.x;
             }
       }

form2:

public partial class Form2 : Form

       {
             public Form2()
            {
               InitializeComponent();
            }

private void Form2_Load(object sender, EventArgs e)
           {

}

public delegate void Text_delegate();
           public event Text_delegate Text_event;
           public static string x;

public void Tram()
          {   
                x = textBox1.Text;
                if (Text_event != null) Text_event();
           }

private void textBox1_TextChanged(object sender, EventArgs e)
          {

}

private void button1_Click(object sender, EventArgs e)
         {
               if (!String.IsNullOrEmpty(this.textBox1.Text))
                {
                    Tram();
                }
          }
}

时间: 2024-10-11 08:16:44

C# 委托和事件 实现窗体间的通信的相关文章

C# 利用委托事件进行窗体间的传值(新手必看)

引言: 窗体间传值是每个学习WinForm新手的常见问题,最初级的方法就是 在窗体中先获取到要接受值窗体.然后通过.得到某个空间或者属性,直接赋值,这个需要接收放的窗体属性或者空间必须是public ,是极不安全的一种方式.在升级一下的新手做法就是在接受窗体中定义一个方法然后通过 调用这个方法来给某个控件或者属性赋值.这两种方法都是非安全的低级方式.非常不建议使用.本文我们讲讲如何通过委托事件(非单纯的委托)来解决窗体间信息传递的问题. 场景: 通过点击主主窗体From_Main的发送按钮,所有

委托:Winform实现窗体间的传值

软件界面如上所示:点击接收窗体实现打开发送窗体,发送窗体点击“发送”,即可发送到接收窗体,可以实现窗体间的传值. 接收窗体的主要代码: /// <summary> /// 打开发送窗体 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnOpen_Click(o

winform使用委托和事件在窗体之间传值

定义委托和事件,并且触发这个事件 //定义委托 public delegate void ShowOutStockDelegate(List<OutStockResultDto> outStockResultDto); //定义事件 public event ShowOutStockDelegate ShowOutStockEvent; private void btnConfirm_Click(object sender, EventArgs e) { ShowOutStockEvent(o

c# 进程间的通信实现之一简单字符串收发

   使用Windows API实现两个进程间(含窗体)的通信在Windows下的两个进程之间通信通常有多种实现方式,在.NET中,有如命名管道.消息队列.共享内存等实现方式,这篇文章要讲的是使用Windows的API来实现简单的进程间通信,这两个进程既可以都是基于C#开发,也可以都是基于C++开发,也可以是一个C#开发而另一个为C++开发,在C++开发方面,不需要额外调用Windows的API,而是可以直接使用相关方法即可.所以,这里重点要讲的就是在C#中是如何做的,而至于在C++中是如何做的

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

窗体间传值 今天得空,刚好看到网上好多人再找winform窗体间传值的问题,由于昨天项目的优化的感觉不错,就写了个C# winform窗体间传值的demo,希望能给需要的人的带来帮助: 工程的源代码地址:https://github.com/yes-or-no/WinFormTransValueDemoByDelOrEvent.git C#winform窗体间传值,三种方法示例,注释详细.使用方法:使用vs2013打开编译运行即可: 工程中总共介绍了三种方法:###方法1:通过保存对象的引用调用

窗体间传值(委托)

窗体间的传值很常用(还记得当时困扰了我好久...),有几种方式都可以实现,这里采用委托的方式. 1.首先,建好两个窗体,想要的效果如下. 2.看看里面的代码 2.1 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 S

Flex中利用事件机制进行主程序与子窗体间参数传递

在开发具有子窗体,或者itemrenderer的应用时,常常涉及到子窗体向父窗体传递参数或者从itemrenderer内的控件向外部的主程序传递参数的需求.这些都可以通过事件机制这一统一方法加以解决.在我的应用中有两个需求: 1.左侧的List控件的itemrenderer中包含CheckBox控件,当其状态改变时需要同时改变主程序中的一个数组变量的内容:2.左下方的"新增届次"按钮会弹出一个窗口,窗口中输入届次信息后需要修改数据库中的表,同时表的更改结果要能够在List控件中体现出来

C# 委托 事件 之 窗体之间互传值

C# 委托 事件 之 窗体之间互传值 效果: Form1.cs: using System; using System.Windows.Forms; namespace 窗体事件互传值2 { public delegate void SetTxb2Del(string str, object obj);//定制针对Txb2的委托 public partial class Form1 : Form { private event SetTxb2Del st2dEvent;//声明Txb2委托的事件

委托——窗体间传值150525

委托总结 //总结 //和outputTime();表达一样,编译器会把outputTime();编译成outputTime.Invoke(); //1 定义委托数据类型 //2 定义委托变量 //3 判断委托类型是否存在,使用委托 //if (outputTime != null) // { // //和outputTime();表达一样,编译器会把outputTime();编译成outputTime.Invoke(); // outputTime.Invoke(); // } // 文件写入