Элемент управления ToolStrip никогда не запускает событие Enter / Leave? - PullRequest
1 голос
/ 22 апреля 2010

Я создал подвижную панель в WinForms. Я использую ToolStrip в качестве заголовка на панели. Я буду использовать ToolStrip, чтобы перемещать панель, а также указывать, активна она или нет. Поэтому, когда панель активна, я хочу изменить BackColor ToolStrip на красный.

ОБНОВЛЕНИЕ: панель будет содержать другие элементы управления, такие как просмотр списка. Я хочу, чтобы панель отображалась как «активная», когда размещенный элемент управления получает фокус, что-то вроде поведения обычного окна, тогда как окно становится панелью, а заголовок становится ToolStrip.

Когда панель считается «активной»

  1. управление размещением получает фокус
  2. ToolStrip - MouseDown / MouseClick
  3. ToolStrip, перетаскиваемый мышью

Идея заключается в захвате события ToolStrip Enter / Leave для изменения цвета, но, похоже, эти события никогда не запускаются.

Эти события действительно никогда не происходят? Должен ли я захватить другие события?

1 Ответ

0 голосов
/ 17 марта 2012

мммм, есть несколько способов сделать это, я думаю.

Вы можете использовать перехват в сообщении IMessageFilter и посмотреть, находится ли оно поверх вашей панели инструментов / панели, и затем действовать соответствующим образом (WM_LBUTTONDOWN, WM_MOUSEMOVE, WM_LBUTTONUP и т. Д. - см. Документацию Windows в сообщениях Windows для шестнадцатеричных кодов сообщений для всех сообщений Windows). Есть много примеров, например: Как определить, находится ли мышь внутри всей формы и дочерних элементов управления?

Установка boolen в зависимости от того, активна она или нет, переопределение в краске может разрешить настройки цвета - или просто перевернуть их вместе с / вместо логического значения. То же самое для перемещения, установите логическое значение для активного движения или нет - и затем позвольте WM_MOUSEMOVE перемещать форму / панель (или нет) по мере необходимости.

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