当前位置: 代码迷 >> 综合 >> 委托方法使用示例delegate
  详细解决方案

委托方法使用示例delegate

热度:17   发布时间:2024-02-06 19:09:20.0

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..............
}
}
}