У меня проблема с элементом управления WebBrowser
. Я добавил его в одно из окон, но он не загружает страницу, к которой я перехожу. Я хочу получить доступ к управлению из других окон, поэтому я сделал общедоступные методы, такие как Навигация и т. Д. Я попытался добавить WebBrowser
в другие формы и, похоже, работает нормально. Он работал над этим окном, когда он был без какого-либо добавленного кода. Я использую AutoResetEvent
, поэтому, когда загрузка сайта будет продолжена, программа продолжит работу. Может ли кто-нибудь сказать мне, где может быть проблема в этом коде?WPF WebBrowser не загружается
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
readonly AutoResetEvent thread1Step = new AutoResetEvent(false);
public void EnterForm(string ElementId, string value)
{
HTMLDocument document = (HTMLDocument)TempBrowser.Document;
document.getElementById(ElementId).innerText = value;
}
public void Navigate(string url)
{
TempBrowser.Navigate(url);
thread1Step.WaitOne();
thread1Step.Reset();
}
public void PressButton(string id)
{
HTMLDocument doc = (HTMLDocument)TempBrowser.Document;
IHTMLElement btn = doc.getElementById(id);
if (btn != null)
{
btn.click();
}
}
public void Scroll(int n)
{
HTMLDocument doc = (HTMLDocument)TempBrowser.Document;
doc.parentWindow.scroll(0, n);
}
private void TempBrowser_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
thread1Step.Set();
}
public void CallFunction(string Funct)
{
TempBrowser.InvokeScript(Funct);
}
}
Вы блокируете поток, который выполняет навигацию с помощью 'thread1Step.WaitOne();'. Так что LoadCompleted никогда не может быть вызван ... См. Например, http://stackoverflow.com/a/20958546/932418 (Это образец WinForm, но его можно легко преобразовать в WPF) –
@LB Я использую потоки для первого времени, но мне как-то удалось заставить ваш код работать в WPF. Но моя главная проблема по-прежнему сохраняется. 'WebBrowser' не загружается, поэтому каждый раз, когда я пытаюсь получить документ от него, документ имеет значение NULL. –