事件是否一定要方法引发?

robter5611 2005-05-19 10:53:18
.Net Framework文档上说的是:

事件功能是由三个互相联系的元素提供的:提供事件数据的类、事件委托和引发事件的类。.NET Framework 具有命名与事件相关的类和方法的约定。如果想要您的类引发一个名为 EventName 的事件,您需要以下元素。

持有事件数据的类,名为 EventNameEventArgs。该类必须从 System.EventArgs 导出。
事件的委托,名为 EventNameEventHandler。
引发事件的类。该类必须提供:
事件声明。
[C#]
public event EventNameEventHandler EventName;

[Visual Basic]
Public Event EventName As EventNameEventHandler

引发事件的方法,名为 OnEventName。

于是按照这个步骤我写了个事件。为简单点,没有事件数据。源代码如下:

using System;

namespace ConsoleApplication1
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
///
public delegate void MyEventEventHandler(object source);
public class MyEventClass
{
public event MyEventEventHandler MyEvent;
public void OnMyEvent()
{
if(MyEvent != null)
MyEvent(this);
}
}
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
MyEventClass c = new MyEventClass();
c.MyEvent +=new MyEventEventHandler(c_MyEvent);
c.OnMyEvent();
}

private static void c_MyEvent(object source)
{
Console.WriteLine("成功引发事件!");
}
}
}

运行没问题。
成功引发了事件。
但有一个问题不明白,就是

    事件是否一定得由方法引发?

如果将程序中 c.OnMyEvent(); 这一行去掉则不能引发事件。

但我看WINDOWS应用程序中,添加一个 Button,双击之,自动添加了一个Click事件,且未用任何方法来引发。运行也没问题。

所以请教各位老大。
...全文
62 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
mba9001 2005-05-20
  • 打赏
  • 举报
回复
但我看WINDOWS应用程序中,添加一个 Button,双击之,自动添加了一个Click事件,且未用任何方法来引发。
//那是因为System.EventArgs e包含了所有的事件源,在你击Button时,程序系统已捕捉到你的事件了,所以它就触发了.你也可以定义你的EventArgs,如继承自某一EventArgs,待你的事件发生,就触发你的方法;

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧