Как зарегистрировать событие мыши из другого класса - PullRequest
3 голосов
/ 14 декабря 2011

У меня есть класс, который пытается зарегистрировать событие в другом классе.

В классе A у меня есть метод, показанный ниже:

 public void Mouse_Down(object sender, MouseEventArgs e)
        {

        }

Я регистрирую событие в классе B примерно так:

            ClassA classA = new ClassA();
            classA.MouseDown += new MouseEventHandler(classA.Mouse_Down);

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

Ответы [ 2 ]

1 голос
/ 14 декабря 2011

Предполагая, что вы хотите обработать событие, вызванное ClassB:

Вы регистрируете событие для события ClassA, а не ClassB. Тот факт, что вы делаете это из класса b, ничего не значит.


Предполагая, что вы хотите обработать событие, вызванное ClassA:

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

ClassA classA = new ClassA();

Выше создается новый экземпляр класса A. Если это не то событие, которое вызывает событие, ваш метод не будет вызван.

0 голосов
/ 14 декабря 2011

Установите точку останова на коде запуска события (класса A) и проверьте свою коллекцию EventHandlers. Могу поспорить, что никто не зарегистрирован, и вы возитесь с экземплярами класса А.

Также возможно, что вы никогда не получите свою точку останова, а это значит, что ваше событие не запущено.

В любом случае, то, что вы хотите сделать, выглядит для меня немного странно.

Edit:

Вы пытались зарегистрировать другой метод для того же события «обычным способом» (например, из конструктора ClassA)? Если у вас нет доступа к коду запуска события, это лучший способ проверить, зарегистрированы ли правильные обработчики в момент запуска события.

...