C # Простой обработчик событий для установки будильника - PullRequest
2 голосов
/ 07 апреля 2010

Почему в следующей строке "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 ]

4 голосов
/ 07 апреля 2010

Ваш alarm_Sound метод является методом экземпляра, что означает, что он может использоваться только на экземпляре вашего класса.
Поскольку Main - это метод static, он не связан с экземпляром класса, поэтому в нем нельзя использовать методы экземпляра.

Вам нужно сделать ваш метод-обработчик alarm_Sound статическим методом, добавив ключевое слово static в его объявление.

Кроме того, вы можете создать экземпляр класса, а затем обратиться к методу-обработчику этого экземпляра.

3 голосов
/ 07 апреля 2010

Вы добавляете обработчик события после вызова метода Set.
Поэтому, когда метод Set вызывает событие, у него еще нет обработчика.

0 голосов
/ 07 апреля 2010

Поскольку метод alarm_Sound определен в контексте класса с именем Alarm в файле Program.cs, поэтому для его вызова вам потребуется экземпляр этого класса.

Было бы лучше определить его как static, поэтому вам не нужен экземпляр для вызова этого метода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...