单播委托
有难点,两个窗口如何传值呢???
用到了委托的概念,类似于传一个方法。
也很简单。具体看代码。
需求:窗口1 有一个按钮 点一下,弹出窗口2。窗口2有一个输入框和按钮,点一下按钮将输入框的值显示到窗口1的label上。
窗口1的代码
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace WindowsFormsApp1{public partial class Form1 : Form{public Form1(){InitializeComponent();}// new 窗口2的时候 把方法传进去private void button1_Click(object sender, EventArgs e){Form2 Form2 = new Form2(ShowMsg);Form2.ShowDialog();}//改变 窗口的具体方法。private void ShowMsg(string str){label1.Text = str;}}}
窗口2的代码
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace WindowsFormsApp1{//1.声明一个委托public delegate void CeShi(string str);public partial class Form2 : Form{// 2.声明一个委托变量public CeShi _ceShi;public Form2(CeShi ceShi){// 3.将传来的方法指向委托类。_ceShi = ceShi;InitializeComponent();}private void button1_Click(object sender, EventArgs e){//4. 执行方法_ceShi(textBox1.Text);}}}
多播委托
一个委托对象可以指定多个函数
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace _15多播委托{public delegate void DelTest();class Program{static void Main(string[] args){DelTest del = T1;del += T2;del += T3;del+= T4;del -= T3;del -= T1;del();Console.ReadKey();}public static void T1(){Console.WriteLine("我是T1");}public static void T2(){Console.WriteLine("我是T2");}public static void T3(){Console.WriteLine("我是T3");}public static void T4(){Console.WriteLine("我是T4");}}}
