Можем ли мы выполнить на Winforms как Tunneling, так и Bubbling? Может быть, с помощью перехвата сообщений API? Любая статья об этом?
Какой-нибудь умный шаблон для выполнения Bubbling и Tunneling для событий на Winforms?
Ответы (1)
Windows Forms не предназначена для этого. Вам нужно будет создать свой собственный агрегатор событий, реализовать собственное визуальное или логическое дерево и т. д., чтобы заставить его работать.
Если вам нужно такое поведение, я рекомендую просто использовать WPF.
person
Reed Copsey
schedule
28.10.2009
Хорошо, я согласен .. но для существующего элемента управления, по крайней мере, всплывающее окно может быть реализовано путем получения сообщения Windows и отправки его в родительский элемент управления?
- person jmayor; 28.10.2009
Каждый элемент управления в цепочке должен будет делать это, и делать это согласованным образом. В основном вам нужно будет реализовать всю свою собственную библиотеку управления, в дополнение к изменению EventArgs на тип, который обрабатывает маршрутизацию (чтобы вы могли пометить его как обработанный и предотвратить его продолжение). Простая повторная отправка сообщения не поможет, так как вы потеряете информацию об элементе управления, вызвавшем сообщение, и т. д. Опять же, если вам нужна функциональность WPF, я бы просто использовал WPF.
- person Reed Copsey; 28.10.2009
Большое спасибо .. Я люблю WPF, но у меня есть одна проблема: хорошо ли WPF отображается в среде удаленного рабочего стола? Это единственное, что меня останавливает, потому что я думаю, что переделать весь элемент управления в WPF может быть проще, чем реализовать все эти всплывающие события в WinForms.
- person jmayor; 28.10.2009
Удаленный рабочий стол в порядке, службы терминалов в порядке, но зависит от того, что вы используете. Если вы используете стандартный WPF (например, не пытаетесь разместить D3D в WPF), он отлично работает, особенно после .NET 3.5sp1.
- person Reed Copsey; 28.10.2009