在C#中,windows的事件都已经是封装好的,我想编写自己的事件,而不是通过已有的事件来触发。比如,我希望画一个矩形,当鼠标进入这个矩形时触发事件(或者是某个图标出现在这个矩形内就触发),应该怎么做。
解决方案 »
- C#执行映射磁盘内脚本文件问题
- 一个关于地图的问题,帮我解决下,急急!!!
- 基础连接已经关闭: 服务器关闭了本应保持活动状态的连接
- 拖管与非拖管的区别?爱管制和未受管制的区别?
- datagridview1改變后的值
- 安装XP-SP2的奇怪问题??????
- Access某个日期字段,如何设置其默认值为当前日期时间。
- 关于Cookies清除的问题
- 一个很郁闷的问题,请大家帮我解解啊
- 表单字段在服务器端判断和确认时,如何判断一个字段是否是int型的?
- 请教一道面试题 根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写
- C#运行显示:无法找到名为“{myConverter}”的资源
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; //记录下状态的改变
}
}
事件是一个特殊的委托,用event关键词修饰
2.什么是委托?
委托是一个特殊写法的类定义。
3.如何触发事件?
直接调用即可,调用前先判断一下是否被注册过。所以,有了这些基础后,例子就容易学会了:
//定义委托
public delegate void MyEventHandler(int value);
//定义事件
public event MyEventHandler MyEvent;
//范例方法调用事件
public void Foo()
{
if(MyEvent!=null) MyEvent(87);
}