C#订阅事件的几种方法

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());
    };
}


上一篇: .NET在屏幕上输出文字
下一篇: 事件和委托
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
最新日志:
评论: 0 | 引用: 0 | 查看次数: 5976
发表评论
登录后再发表评论!