Событие MouseEnter и MouseLeave не возникает в пользовательском элементе управления

Вот проблема:

  • У меня есть простая форма С#
  • У меня есть простой пользовательский элемент управления С#, содержащий изображение и другую кнопку.
  • Моя форма содержит один экземпляр пользовательского элемента управления.
  • Я хочу, чтобы когда пользователь делает mouseEnter в поле изображения, курсор мыши изменяется, а когда пользователь делает mouseLeave окна изображения, мышь возвращается в нормальное состояние.

Что происходит сейчас, так это то, что события вообще не запускаются. Я поставил точку останова в MouseOver, MouseEnter, MouseMove, MouseLeave и т. д., и ни один из них не сработал. Это первый раз, когда у меня есть эта проблема в С#.

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

Заранее спасибо!


person Jean-François Côté    schedule 20.06.2011    source источник


Ответы (2)


Какие события вы используете? События UserController.MouseEnter и UserController.MouseLeave или события PictureBox.MouseEnter и PictureBox.MouseLeave?

Вы должны использовать последнее, так как PictureBox будет обрабатывать событие, если мышь войдет в пользовательский контроллер напрямую через PictureBox.

person InBetween    schedule 20.06.2011
comment
Да, я использовал события PictureBox.MouveEnter, и на самом деле это сработало. Моя проблема заключалась в том, что у меня было 2 окна с картинками, и одно из них было над другим. Ошибка очень новичка! - person Jean-François Côté; 20.06.2011

Как писал InBetween, PictureBox.MouseXXX должен стрелять. Вы можете поймать их в ловушку в своем UserControl.

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

person Serge Wautier    schedule 20.06.2011
comment
Спасибо за вклад, см. мой комментарий в другом ответе. :) - person Jean-François Côté; 20.06.2011