Я видел несколько потоков в StackOverflow по этой теме, однако ни один из них, похоже, не дает ответа.C# WPF - Ожидание загрузки страницы
У меня есть кнопка, которая при нажатии открывается невидимая веб-страница, перемещается по URL-адресу, вводит информацию в поле, нажимает кнопку, а затем выводит на экран информацию.
Кости моего кода в основном в щелчку:
WebBrowser wb = new WebBrowser;
wb.Visibility = System.Windows.Visibility.Hidden;
wb.Navigate("http://somepage.com");
И это, где это становится сложнее.
Я ищу способ обеспечить, что страница загружается, прежде чем пытаться ввести данные или очистить экран. Я видел несколько тем, которые говорят о Navigated
, IsLoaded
, LoadCompleted
, а также BackgroundWork
, но я не могу заставить их работать.
Какой вариант лучше всего использовать для определения того, что страница полностью загружена? Как бы вы выбрали выбранный метод?
Я также не могу получить данные с экрана, так как WPF не использует то же самое GetElementByID
.
Edit:
Per комментарий ниже, вот ошибки я бегу в:
- навигацию, первым, как только страница была навигация тоже и вовсе не обязательно ждать, пока все объекты загружены. Это работает по назначению, но не может использоваться для моих целей.
IsLoaded
никогда не возвращает истинуprivate void GetData_Click(object sender, RoutedEventArgs e) { int x=0; HTMLDocument doc; wb = new WebBrowser(); wb.Visibility = System.Windows.Visibility.Visible; wb.Navigate("somesite.com"); doc = wb.Document as mshtml.HTMLDocument; while(!wb.IsLoaded) { //Wait } doc.getElementById("txt_One").innerText = "It Worked"; }
Кладет его в бесконечном цикле, как wb
не кажется, никогда не загружать.
- Это версия с LoadCompleted
событие 'System.Windows.Controls.WebBrowser.LoadCompleted' может появиться только на левой стороне + = или - =
private void GetData_Click(object sender, RoutedEventArgs e)
{
int x=0;
HTMLDocument doc;
wb = new WebBrowser();
wb.Visibility = System.Windows.Visibility.Visible;
wb.Navigate("somesite.com");
doc = wb.Document as mshtml.HTMLDocument;
wb.LoadCompleted += wb_LoadCompleted;
doc.getElementById("txt_One").innerText = "It Worked";
}
void wb_LoadCompleted(object sender, NavigationEventArgs e)
{
}
Выдает ошибку
Необработанное исключение типа «System.NullReferenceException» произошло в {filename}
Дополнительная информация: Ссылка на объект не установлена в экземпляр объекта.
Просьба уточнить, что «не может заставить их работать». Покажите свой код, опишите проблему с каждой попыткой более подробно. Мы не можем сказать вам, почему это не работает, не видя никакого кода. – tnw
Спасибо за ваше редактирование ... но пожалуйста ** покажите свой код **. – tnw