用于设置警报的C#简单事件处理程序

时间:2010-04-07 16:05:45

标签: c# visual-studio events event-handling

为什么以下行“alarm.AlarmEvent + = new AlarmEventHandler(alarm_Sound);”给我“非静态字段,方法或属性需要一个对象引用'AlarmClock.Alarm.alarm_Sound(object,System.EventArgs)'”

   public static void Main(string[] args)
    {
        Alarm alarm = new Alarm(new DateTime(2010, 4, 7, 23, 2, 0));
        alarm.Set();
        alarm.AlarmEvent += new AlarmEventHandler(alarm_Sound);            
    }

这里的完整源代码: Program.cs AlarmEventArgs

3 个答案:

答案 0 :(得分:4)

您的alarm_Sound方法是一种实例方法,这意味着它只能用于您班级的实例
由于Mainstatic方法,因此它与类的实例无关,因此您不能在其中使用任何实例方法。

您需要通过在其声明中添加alarm_Sound关键字,使static处理程序方法成为静态方法。

或者,您可以创建该类的实例,然后引用该实例的处理程序方法。

答案 1 :(得分:3)

您在调用Set方法后添加了事件处理程序 因此,当Set方法引发事件时,它还没有处理程序。

答案 2 :(得分:0)

因为alarm_Sound方法是在Program.cs文件中名为Alarm的类的上下文中定义的,所以,为了调用它,你需要一个该类的实例。

最好将其定义为static,这样您就不需要一个实例来调用该方法