谈到事件,用的动词一般是触发。窗体控件有很多事件,大多与用户的鼠标、键盘操作相关(如Click),也有些是控件自身的事件(如Loaded)。事件只是告诉你发生了这个事件(如用户按了按钮),那按了按钮怎么办呢?所以可以写事件处理函数。把事件处理函数跟事件绑定起来,这叫做订阅事件。新建一个Windows窗体应用程序,放一个按钮,使用以下代码。如果你把订阅事件的一句去掉,按下按钮再也不会弹出对话框了,因为你没把事件和事件处理函数关联起来。
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();            button1.Click += button1_Click; //订阅事件
        }        private void button1_Click(object sender, EventArgs e) //事件处理函数
        {
            MessageBox.Show("按钮被按下了");;
        }
    }你问触发事件的方法在哪里,即最终是谁调用了button1_Click?那是.net framework,Button类自己知道何时用户在它上面按了鼠标,Button类就自己触发Click事件(不论到底有没有人订阅了这个事件)。你可能问用户没有按下按钮的时候能不能触发Click事件。因为Click的触发逻辑已经在Button里写死了,你不能改。C#规定你不能在定义事件的类之外触发事件。但是你可以手工调用事件处理函数。
        public Form1()
        {
            InitializeComponent();            button1.Click += button1_Click;            button1_Click(null, EventArgs.Empty);
        }        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("按钮被按下了");;
        }在窗口打开的时候,会提示按钮被按下了。

解决方案 »

  1.   

    去看下win32编程,你就知道这些事件是怎么驱动起来的,如鼠标单击这个消息怎么最后触发了click事件。再不济,看MFC也行
      

  2.   

    其实.Net环境下,每个控件都有许多常用的触发事件,都有说明的,你可以多看看。
    只是在某些时候,自己想出来一些事件想让程序在XXX时候执行,但是.Net的环境下却没有这样的事件,那么就难写了。