木子屋 Dnawo's BLOG

C#订阅事件的几种方法

👤 dnawo 📅 2008-12-03 👁 6548 👍 0 💬 0 🔄 本站原创
private void Form1_Load(object sender, EventArgs e)
{
    button1.Click += new EventHandler(button1_Click);
}

private void button1_Click(object sender, EventArgs e)
{
    MessageBox.Show("Hello World!\r" + DateTime.Now.ToString());
}

订阅事件平时我们大都像上边格式写,还可以写成如下形式:

private void Form1_Load(object sender, EventArgs e)
{
    button1.Click += delegate(object sender1, EventArgs e1)
    {
        MessageBox.Show("Hello World!\r" + DateTime.Now.ToString());
    };
}

这有些类似于Js的匿名函数🙂,要注意当不需要参数时应去掉delegate后面的中括号!下边的例子比较有意思,也正是因为这写法不同引起的:

int i = 0;

private void Form1_Load(object sender, EventArgs e)
{
    button1.Click += new EventHandler(button1_Click);
}

private void button1_Click(object sender, EventArgs e)
{
    i++;
    MessageBox.Show(i.ToString());
}

private void Form1_Load(object sender, EventArgs e)
{
    int i = 0;

    button1.Click += delegate
    {
        i++;
        MessageBox.Show(i.ToString());
    };
}

评论(0)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 .NET在屏幕上输出文字 下一篇 → 事件和委托