C # как отключить использование веб-браузера - PullRequest
5 голосов
/ 26 февраля 2009

У меня есть приложение на C #, в котором есть веб-браузер, и мне нужно время от времени полностью его отключать. Каков наилучший способ сделать это?

Я думал о создании прозрачной панели для размещения поверх веб-браузера, когда это необходимо, но я не уверен, что это лучший подход. Я также заметил, что C # не позволяет легко сделать панель прозрачной.

Редактировать: Чтобы уточнить, что я имею в виду под отключением ... Я не хочу позволить пользователю иметь возможность щелкать или изменять \ редактировать что-либо в веб-браузере.

Ответы [ 5 ]

17 голосов
/ 26 февраля 2009

Странно, но элемент управления WebBrowser не имеет свойства Enabled, как вы могли бы ожидать. Вы можете установить для свойства AllowNavigation значение false, чтобы пользователь не нажимал на ссылки.

Оказывается, у него есть свойство Enabled, унаследованное от Control. Но вы должны явно привести его к Control, чтобы получить к нему доступ:

((Control)webBrowser1).Enabled = false;

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

Если это было больше, чем вы хотели, то если установить для свойства AllowNavigation значение false, пользователь не сможет переходить по ссылкам, но все же будет иметь возможность прокручивать страницу. Вам нужно проверить, что он также останавливает запуск событий Javascript onclick.

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

3 голосов
/ 26 февраля 2009

Исходя из вашего последнего комментария, я бы предположил, что вы используете WinForms. (WPF довольно легко допускает прозрачные панели :-)) Это означает, что вы используете элемент управления WebBrowser. Вы пытались установить для свойства Enabled значение false?

1 голос
/ 26 февраля 2009

Когда вы говорите «отключить», что вы имеете в виду? Если для свойства 'Enabled' установлено значение false, оно будет отключено, это работает для всех элементов управления формы. Но если вам нужно, вы можете установить прозрачную панель, установив ее BackColor.

UPDATE: На самом деле, вы правы, это обертка для элемента управления ActiveX, так что это не типичный элемент управления WinForms. То, что вы хотите, это прозрачное решение Paenl. У этого парня Тоби есть решение в его блоге:

http://saftsack.fs.uni -bayreuth.de / ~ dun3 / архивы / создание-а-прозрачная-панели-в-сеть / 108.html

Основная идея заключается в переопределении этого метода на классе панели:

protected override CreateParams CreateParams
{
    get
    {
         CreateParams createParams = base.CreateParams;
         createParams.ExStyle |= 0x00000020; // WS_EX_TRANSPARENT
         return createParams;
    }
}
0 голосов
/ 02 октября 2014

В VB: DirectCast (WebBrowser1, Control) .Enabled = False

0 голосов
/ 26 февраля 2009

Вы можете удалить веб-браузер из родительского массива Control?

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