Как вызвать / вызвать обработчик события нажатия кнопки из другого обработчика?(с #) - PullRequest
2 голосов
/ 15 сентября 2011

Я, должно быть, упускаю что-то очевидное - я новичок в .NET - разрабатывал на C ++ / MFC много лет.

В обработчике события для нажатия кнопки я хотел бы затем повторно использовать другой обработчик события / нажатие. Тем не менее, я не могу понять, как это сделать.

Бит, который может вызывать проблемы, заключается в том, что обработчик для второго элемента, который я хочу "запустить", не находится в той же форме / контексте.

Кажется, я должен просто вызывать метод ...

Но я, похоже, не могу этого сделать.

Это в компактном фреймворке / Win Mobile

Ответы [ 5 ]

3 голосов
/ 15 сентября 2011

Вам необходимо выполнить одно из следующих действий:

  • Предоставить доступ к экземпляру класса, содержащего обработчик (т.е. ссылку на этот объект)
  • Сделать обработчик статическим, чтобы любойэкземпляр может ссылаться на него напрямую
  • Поместить обработчик в какой-либо другой глобально доступный объект (статический, синглтон и т. д.), чтобы оба потребителя могли использовать его
  • Использовать среду, которая обеспечивает агрегацию событий, чтобы вы нене стоит беспокоиться о таких вещах
2 голосов
/ 15 сентября 2011

Как насчет того, чтобы вы превратили общий код в приватный метод? Затем вы можете вызвать этот метод из обоих обработчиков.

1 голос
/ 15 сентября 2011

Я думаю, что лучшим решением было бы реорганизовать ваш код, чтобы работа, выполняемая исходным обработчиком событий, содержалась внутри функции.

Тогда и исходный, и новый обработчики вызывают одну и ту же функцию.

0 голосов
/ 15 сентября 2011

Мое невежество.У меня просто не было видимости другому обработчику.Это простая проблема, которую нужно решить - я просто сделал обработчик видимым для объекта / формы, который обрабатывает второе событие, и легко вызвать другое событие.

0 голосов
/ 15 сентября 2011

Внутри обработчика событий 1 просто вызовите событие, для которого обработчик событий 2 «прослушивает».Так что внутри обработчика событий 1 положите OnEvent().Обратите внимание, что обработчик события 2 уже должен быть подключен для прослушивания события.

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

...