在C#中,windows的事件都已经是封装好的,我想编写自己的事件,而不是通过已有的事件来触发。比如,我希望画一个矩形,当鼠标进入这个矩形时触发事件(或者是某个图标出现在这个矩形内就触发),应该怎么做。

解决方案 »

  1.   

    添加一个事件:
    public event EventHandler EnterTheRect;
    触发事件
    public void PictureBox1_MouseMove(object sender, MouseEventArgs e)
    {
        if (e.X > 矩形.Left && e.X < 矩形.Width - 矩形.Left && ... && preState = 0)
        {
            if (EnterTheRect != null) EnterTheRect(this, new EventArgs());
            preState = 1; //记录下状态的改变
        }
    }
      

  2.   

    1.什么是事件?
    事件是一个特殊的委托,用event关键词修饰
    2.什么是委托?
    委托是一个特殊写法的类定义。
    3.如何触发事件?
    直接调用即可,调用前先判断一下是否被注册过。所以,有了这些基础后,例子就容易学会了:
    //定义委托
    public delegate void MyEventHandler(int value);
    //定义事件
    public event MyEventHandler MyEvent;
    //范例方法调用事件
    public void Foo()
    {
        if(MyEvent!=null) MyEvent(87);
    }