Очистка выбора в элементе управления веб-браузера

У меня есть форма с управлением веб-браузером, где я копирую все данные TEXT (не html) в буфер обмена.

Для этого фрагмент кода: -

webBrowser2.Document.ExecCommand("SelectAll", false, null);
webBrowser2.Document.ExecCommand("Copy", false, null);

Я написал приведенный выше код в webBrowser2_DocumentCompleted.

Проблема в том, что веб-страница в webbrowserControl появляется с выделением. Я хочу очистить этот выбор после операции копирования.

Есть ли способ сделать это или команда, такая как

 webBrowser2.Document.ExecCommand("ClearSelection", false, null);  //This doesn't work

person anurag    schedule 22.01.2014    source источник


Ответы (3)


Если вы импортируете библиотеку Microsoft.mshtml (C:\Program Files\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll), вы можете использовать свойство selection веб-браузера Document:

using mshtml;

...

IHTMLDocument2 htmlDocument = webBrowser2.Document.DomDocument as IHTMLDocument2;

IHTMLSelectionObject selection = htmlDocument.selection;

if (selection != null) {
    selection.clear();
}

В противном случае вы всегда можете Navigate указать URI скрипта:

webBrowser2.Navigate("javascript:document.selection&&document.selection.clear();");

Изменить: изменено использование Navigate вместо InvokeScript.

person Toothbrush    schedule 22.01.2014
comment
второй метод не работает на моем компьютере, и веб-браузер становится пустым. - person anurag; 22.01.2014
comment
Нет, это не так. Веб-браузер загружает только содержимое главной страницы, а все остальное пусто. - person anurag; 23.01.2014
comment
htmlDocument.execCommand(UNSELECT, false, Type.Missing); работал на меня. Я нашел это на ssicom.org/js/x277333.htm . - person anurag; 23.01.2014
comment
@anurag Приятно знать! Спасибо. - person Toothbrush; 24.01.2014

Я смог использовать метод Refresh элемента управления браузера, чтобы сделать то же самое. (т.е. webBrowser2.Refresh())

person Thomas Sapp    schedule 01.07.2015
comment
Это было как раз то, что мне было нужно. :) - person Andrew Truckle; 17.06.2016
comment
Обновление ИМХО - это нечто иное, чем очистка выбора. Даже если он очищает выделение. - person tiands; 31.10.2019

Если вы хотите отменить выбор, используйте:

htmlDocument.ExecCommand("Unselect", false, Type.Missing);

Но если вы хотите удалить (скрыть) выделенное слово:

IHTMLDocument2 htmlDocument = webBrowser2.Document.DomDocument as IHTMLDocument2;
IHTMLSelectionObject selection = htmlDocument.selection;

if (selection != null) {
    selection.clear();
}
person greene    schedule 05.07.2015
comment
По крайней мере, в моем проекте С# Unselect работает. myDoc.execCommand(Unselect, false, null); - person tiands; 31.10.2019