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;
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 Delegate.test
{
public delegate void Value(string str);
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 第一种委托的最原始用法时才需要有这个方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
//private void Method(string str)
//{
// label1.Text = str;
//}
///委托的理解:
///delegate定义一个事情需要委托给别人做,但是给谁做不确定;
///事件发生,NEW委托时,将一个方法作为实参写进NEW委托的语句里。此时表示委托给了该方法去做;
///new后新建的委托名称.Invoke(实参)。即:给委托的方法传送实参。
{
public delegate void Value(string str);
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 第一种委托的最原始用法时才需要有这个方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
//private void Method(string str)
//{
// label1.Text = str;
//}
///委托的理解:
///delegate定义一个事情需要委托给别人做,但是给谁做不确定;
///事件发生,NEW委托时,将一个方法作为实参写进NEW委托的语句里。此时表示委托给了该方法去做;
///new后新建的委托名称.Invoke(实参)。即:给委托的方法传送实参。
private void textBox1_TextChanged(object sender, EventArgs e)
{
///第一种,委托的最原始用法
{
///第一种,委托的最原始用法
//Value value = new Value(Method);//所谓委托,就是Delegate定义有这么个事件需要别人帮忙做,
//value.Invoke(textBox1.Text); //由谁做不确定。在事件发生时NEW委托类,这个时候把哪个方法
// //作为参数写进里面,就是委托给了那个方法。
// //然后再调用该重载后的委托类。这就是委托的全部含义
///第二种,委托的匿名用法
//Value value = delegate (string str) { label1.Text = str; };//省略method方法,公式写在了这里
//value.Invoke(textBox1.Text);//上一行直接省略了需要委托的对象(即method方法),便于阅读
///第三种方法,lambda表达式
Value value = (str) => { label1.Text = str; };
value.Invoke(textBox1.Text);
//value.Invoke(textBox1.Text); //由谁做不确定。在事件发生时NEW委托类,这个时候把哪个方法
// //作为参数写进里面,就是委托给了那个方法。
// //然后再调用该重载后的委托类。这就是委托的全部含义
///第二种,委托的匿名用法
//Value value = delegate (string str) { label1.Text = str; };//省略method方法,公式写在了这里
//value.Invoke(textBox1.Text);//上一行直接省略了需要委托的对象(即method方法),便于阅读
///第三种方法,lambda表达式
Value value = (str) => { label1.Text = str; };
value.Invoke(textBox1.Text);
}
}
}
}
}
winform窗体如图:
将textBox1.text写入到label1.text中去