using System;
using System.Windows.Forms;
namespace nathan_soft
{
//定义一个委托类型,用来保存无参数,无返回值的方法。委托在命名空间中和类是一个级别的,相当于将方法定义成变量。
public delegate void Mydelegate();
public partial class Form_delegate : Form
{
public Form_delegate()
{
InitializeComponent();
}
private void Form_delegate_Load(object sender, EventArgs e)
{
}
private void m1() {
textBox1.Text += "m1方法被调用了";
}
private void m2()
{
textBox1.Text += "m2方法被调用了";
}
private void btn_执行方法m1_Click(object sender, EventArgs e)
{
Mydelegate mydelegate = new Mydelegate(m1);
mydelegate();
}
private void btn_执行方法m2_Click(object sender, EventArgs e)
{
Mydelegate mydelegate = new Mydelegate(m2);
mydelegate();
}
private void btn_输出时间到文本框_Click(object sender, EventArgs e)
{
//定义一个委托方法,将会被带入到另一个类中进行动态变更执行
Dele_witetime delegate_writetime = new Dele_witetime(Writetotextbox);
//在Testclass中定义了一个委托方法,可以使用外部的方法进行动态的变更
Testclass testclass = new Testclass();
testclass.dosomething(delegate_writetime);
}
private void btn_输出时间到文件_Click(object sender, EventArgs e)
{
//定义一个委托方法,将会被带入到另一个类中进行动态变更执行
Dele_witetime delegate_writetime = new Dele_witetime(Writetofile);
//在Testclass中定义了一个委托方法,可以使用外部的方法进行动态的变更
Testclass testclass = new Testclass();
testclass.dosomething(delegate_writetime);
}
void Writetotextbox()
{
textBox1.Text = DateTime.Now.ToString();
}
void Writetofile()
{
System.IO.File.WriteAllText("datetime.txt",DateTime.Now.ToString());
}
}
public delegate void Dele_witetime();
class Testclass
{
public void dosomething(Dele_witetime writetime)
{
//somecode here..............
writetime();
//somecode here..............
}
}
}