100分求教,事件是否一定得由方法引发?刚才发的那个分数太少了。呵呵...
.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事件,且未用任何方法来引发。运行也没问题。
所以请教各位老大。