我正在尝试创建一个主要表单可以订阅的事件。这个类最终会更大,它用于向Windows事件查看器执行信息/警告/错误信息(尚未完成该部分),但它也会发送到表单信息。我在很多地方都使用过事件,但这是我第一次尝试在静态类中创建事件。我没有想到会有任何问题,但是我得到了这个错误" raiseEventtoForm:无法在静态类中声明实例成员。"
我的所有成员都是静态的 - 我不确定为什么会发生这种情况。
我无法在静态类中生成事件吗?我无法找到任何表明我不会被允许的东西。
编辑:更新了委托以使其不具有静态关键字。
public static class HABLAEvents
{
public delegate void RaiseMessageEvent(string message, Color foreColor, Color backColor);
public static event RaiseMessageEvent trigger = delegate { };
public static void MessageEvent(string message, Color foreColor, Color backColor) { trigger(message, foreColor, backColor); }
public static void raiseEventtoForm(string message, Color fc, Color bc)
{
MessageEvent(message, fc, bc);
}
}
编辑:同样的错误"不能在静态类中声明实例成员"也存在于trigger和MessageEvent
答案 0 :(得分:1)
这里举一个例子:
using System;
public static class Test
{
public static void Main()
{
EventsClass.someDelegateEvent += func;
EventsClass.Raise();
}
public static void func(int number){
Console.WriteLine(number);
}
}
public static class EventsClass
{
public delegate void someDelegate(int num);
public static event someDelegate someDelegateEvent;
public static void Raise()
{
if (someDelegateEvent != null)
someDelegateEvent(6);
}
}