用委托实现窗体间传值

  1. 新建一个工程.在Form1中添加一个Label和一个Button.新建一个事件类,让它有一个string 类型的属性,用于传值.
    代码
     1 ///ReturnValueEventArgs.cs
     2 using System;
     3 using System.Collections.Generic;
     4 using System.Text;
     5 
     6 namespace test
     7 {
     8     public  class ReturnValueEventArgs:EventArgs 
     9     {
    10         private string str;
    11 
    12         public string strMessage
    13         {
    14             get
    15             {
    16                 return str;
    17             }
    18             set
    19             {
    20                 str = value;
    21             }
    22         }
    23     }
    24 }
    25 
  2.  新建一个窗体Form2.添加一个TextBox和一个Button.添加如下代码.
    代码
     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Data;
     5 using System.Drawing;
     6 using System.Text;
     7 using System.Windows.Forms;
     8 
     9 namespace test
    10 {
    11     public partial class Form2 : Form
    12     {
    13         public  event returnValueHandler returnValue;
    14 
    15         public Form2()
    16         {
    17             InitializeComponent();
    18         }
    19 
    20         private void button1_Click(object sender, EventArgs e)
    21         {
    22             ReturnValueEventArgs ee = new ReturnValueEventArgs();
    23             ee.strMessage = textBox1.Text;
    24             returnValue(sender, ee);
    25         }
    26     }
    27 }
  3. 在Form1中添加如下代码.
     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Data;
     5 using System.Drawing;
     6 using System.Text;
     7 using System.Windows.Forms;
     8 
     9 
    10 namespace test
    11 {
    12     public delegate void  returnValueHandler (object sender ,ReturnValueEventArgs e);
    13     public partial class Form1 : Form
    14     {
    15         
    16         public Form1()
    17         {
    18             InitializeComponent();
    19         }
    20 
    21         private void button1_Click(object sender, EventArgs e)
    22         {
    23             Form2 frm = new Form2();
    24             frm.Show();
    25             frm.returnValue += new returnValueHandler(frm_returnValue);
    26             
    27 
    28         }
    29 
    30         void frm_returnValue(object sender, ReturnValueEventArgs e)
    31         {
    32 
    33             label1.Text = e.strMessage;
    34             //throw new Exception("The method or operation is not implemented.");
    35         }
    36     }
    37 }

这样就可以实现窗体之间通过委托传值.


原文地址:https://www.cnblogs.com/hbhbice/p/1717185.html