WPF WebBrowser контроль.необходимо предотвратить его закрытие в приложении - PullRequest
0 голосов
/ 17 ноября 2011

У меня есть WPF, где я реализую элемент управления WebBrowser, и у меня есть список объектов, которые при выборе их меняют привязку URL для элемента управления webBrowser, и все в порядке.

Однако, есливеб-страница, на которой я пытаюсь закрыть веб-страницу, появляется диалоговое окно, в котором можно нажать «да» или «нет», чтобы закрыть «окно» (элемент управления веб-браузера)

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

Элемент управления веб-браузера не имеет метода для закрытия открытого доступа, где я могу получить к нему иМне удалось переопределить метод «Window.Close ()», но это также не позволило мне закрыть главное окно приложения.

Я пытался наследовать от класса WebBrowser, но он запечатан, поэтому я не могу наследоватьдобавить обработчики событий или методы переопределения, такие как «Close ()» или события, такие как «OnClosing ()»

Я не имею никакого контроля над веб-сайтомпотому что это сторонний продукт.

Кроме того, элемент управления WebBrowser не отменяет навигацию при выходе.

, поэтому мой вопрос

A.Можно ли перехватить диалог и всегда отвечать «нет»?

или

B.Есть ли другой способ предотвратить закрытие элемента управления WebBrowser, даже если пользователь говорит «да» диалоговому окну?

Ответы [ 2 ]

1 голос
/ 06 декабря 2011

Итак, я закончил тем, что поместил элемент управления в отдельное представление, а затем создал и уничтожил представление как диалог

0 голосов
/ 18 ноября 2011

Однажды мне пришлось решать аналогичную ситуацию.Это было приложение Delphi со встроенным компонентом TWebBrowser, которое по сути то же самое, что и WebBrowser .NET.Программное обеспечение автоматически нажимало на элементы веб-страницы, и был случай, когда после щелчка появилось диалоговое окно подтверждения.Простейшим способом автоматического нажатия кнопки OK было вызвать FindWindow с параметрами диалогового окна подтверждения и использовать дескриптор окна, чтобы отправить ему клавишу Enter, нажав SendInput .Я думаю, что в вашем случае необходимо нажать клавишу Escape.

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