2012-04-20 4 views
0

У меня есть приложение Windows Forms, и я хочу, чтобы показать тип типа «post-it note», когда пользователь выполняет определенное действие.C#: Временно захватывать событие OnClick в родительском элементе управления

Например: пользователь выполняет то, что автоматически скрывает элемент управления.

Мое заявление должно: o Выложить сообщение, которое поясняет, что произошло. o Скрыть сообщение, которое оно отмечает снова, когда пользователь щелкает в любом месте формы.

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

Однако я не могу захватить событие OnClick родительского UserControl. Родительский элемент управления представляет собой вложенный элемент управления, содержащий разделенный контейнер, одна сторона которого содержит панель и элемент управления вкладками, каждый из которых содержит пользовательский элемент управления с различными элементами.

Помимо обработки события щелчка каждого отдельного дочернего элемента управления, может ли кто-нибудь подумать о событии, которое я могу захватить на родительском элементе управления, которое я могу использовать, чтобы скрыть сообщение, которое он отмечает, когда пользователь щелкает в любом месте родительского элемента управления?

Спасибо, Rik

+0

Будет ли усадьба формы не достаточной? – BugFinder

+0

В этом простом сценарии почему бы не использовать Windows.Forms.Timer? Через 5 секунд (или настраиваемое значение) всплывающее окно будет закрыто в событии Tick – Steve

ответ

5

Это то, что предназначалось для объекта Capture. Установите его на true, когда вы всплываете записку. Любые события мыши теперь будут направлены на ваш контроль, даже если мышь перемещается за пределы окна. Это также способ, которым, например, работает выпадающий список combobox. Имейте в виду, что это хорошо только для одного щелчка.

Если всплывающее окно содержит все элементы управления, захват мыши не является решением. Сделайте вместо этого свою форму и просто вызовите Close() в обработчике событий для события Deactivate.

-1

Существует bubling событий в окне формы, в то время как вы нажмете на событии ребенка, событие возникает для ребенка, а затем и для родителей. Если вы не укажете для свойства handleEvnet значение true. Поэтому просто оставьте это false, пока событие не достигнет родителя.

+0

[Windows Forms 'Control.Click'] (https://msdn.microsoft.com/en-us/library/system.windows. forms.control.click% 28v = vs.100% 29.aspx) предоставляет только экземпляр класса ['EventArgs'] (https://msdn.microsoft.com/en-us/library/system.eventargs% 28v = vs.100% 29.aspx), который не имеет такого свойства, как 'HandleEvent' или' Handled'. –

Смежные вопросы