Обновление iFrame в элементе управления веб-браузера

C# Visual Studio 2010

У меня есть сложная веб-страница, которая содержит несколько фреймов, которые я загружаю в элемент управления веб-браузера. Я пытаюсь найти способ обновить один из фреймов, когда пользователь нажимает кнопку в форме окна.

Я не могу найти что-то конкретное для обновления одного фрейма. Есть идеи?

2 ответа

Из DOM вы можете просто вызвать:

document.getElementById([FrameID]).contentDocument.location.reload(true);

Используя элемент управления WebBrowser, вы можете выполнить javascript самостоятельно, используя метод InvokeScript в Document:

browser.Document.InvokeScript([FunctionName], [Parameters]);

Соедините эти две концепции, написав свою собственную функцию на родительской странице:

function reloadFrame(frameId) {
    document.getElementById(frameId).contentDocument.location.reload(true);
}

И вызвать это в вашем коде C#:

browser.Document.InvokeScript("reloadFrame", new[] { "myFrameId" });

Как насчет использования MSHTML и метода перезагрузки интерфейса IHTMLLocation. Вы бы добавили ссылку на Microsoft.mshtml и попробуйте:

IHTMLDocument2 doc = webBrowser1.Document.Window.Frames["MyIFrame"].Document.DomDocument as IHTMLDocument2;
IHTMLLocation location = doc.location as IHTMLLocation;

if (location != null)
    location.reload(true);

Значение true перезагружает страницу с сервера, пока false извлекает его из кеша

Другие вопросы по тегам