按钮的单击事件函数的参数 sender,为何名字随便写也行呢?
我为 button1 写个单击事件响应函数,
然后,我用代码调用这个函数,为何一下几种写法都行呢?//sender 参数为 null 时,
button1_Click(null, null);
//sender 为 button1 时,
button1_Click(button1, null);
//为何 sender 参数为 button2时,也会调用button1的单击事件呢?
button1_Click(button2,null);难道,sender 参数可以随便填吗,只要是控件的名就行using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace hh
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("按钮1被单击", "df", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }        private void button2_Click(object sender, EventArgs e)
        {
            button1_Click(null, null);
            button1_Click(button1, null);
            //为何 sender 参数为 button2时,也会调用button1的单击事件呢?
            button1_Click(button2,null);
        }
    }
}

解决方案 »

  1.   

    其实想多了,就是一个函数,button1_Click(button2,null)虽然sender是button2,但是调用的还是button1_Click这个函数,就像参数传递虽然不同,但是调用的方法还是同一个方法一样
      

  2.   

    当然了,button1_Click没有变啊,只是你把参数改变了,事件还是执行的!
      

  3.   

    但是,参数 sender 有什么用呢,sender是事件的发起者呀
      

  4.   

    sender怎么样要看 这个事件的观察者了,你须得去看订阅这个事件的函数
      

  5.   

    如果你函数内部不需要sender提供的信息,这个参数传什么都无所谓.
    但是有些时候需要sender来提供信息,最简单的一个例子,有100个button,点击后显示button的名字.
    这时候我们可以绑定到同一事件button_Click,然后通过sender来判断是哪个button