静态事件尝试声明非静态实例

时间:2014-06-18 18:23:32

标签: c# static raiseevent

我正在尝试创建一个主要表单可以订阅的事件。这个类最终会更大,它用于向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

1 个答案:

答案 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);
    }
}