Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.76/37: Рейтинг темы: голосов - 37, средняя оценка - 4.76
miachka
4 / 4 / 0
Регистрация: 11.08.2010
Сообщений: 28
#1

WebBrowser.Navigate: Как без сообщения прочитать документ?

15.03.2011, 18:33. Просмотров 6636. Ответов 8
Метки нет (Все метки)

Извиняюсь, если повторюсь, но не нашла ответа на свой вопрос, или плохо искала)

Вот такой код висит. Значение wb.ReadyState постоянно Uninitialized
C#
1
2
3
4
5
WebBrowser wb = new WebBrowser();
wb.Navigate("http://ya.ru/");
while (wb.ReadyState != System.Windows.Forms.WebBrowserReadyState.Complete) 
       System.Threading.Thread.Sleep(50);
if (wb.DocumentText.Contains("Яндекс")) MessageBox.Show(wb.DocumentTitle);

А вот так уже работает:
C#
1
2
3
4
5
6
WebBrowser wb = new WebBrowser();
wb.Navigate("http://ya.ru/");
MessageBox.Show("Эх. Всю голову сломала");
while (wb.ReadyState != System.Windows.Forms.WebBrowserReadyState.Complete)
       System.Threading.Thread.Sleep(50);
if (wb.DocumentText.Contains("Яндекс")) MessageBox.Show(wb.DocumentTitle);
Как без сообщения прочитать документ? Почему он не грузится? И что за волшебство во время мессаджа?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2011, 18:33
Ответы с готовыми решениями:

WebBrowser полностью игнорирует вызовы Navigate(),GoHome(),Stop() и т.д
Прошу вашей помощи. На форме висит webBrowser. Загружаю через него любой сайт -...

WebBrowser не отдает страничку после Navigate (цепочка переходов)
Задача по парсингу сайта. Часть переходов - это подгрузка через Ajax данных на...

Как прочитать значение в реестре без ошибок?
При переименовании раздела MyReg появляется ошибка и приложение зависает. Как...

WebBrowser - как изменить HTML без изменения URL?
WebBrowser - как изменить HTML без изменения URL? Когда я изменяю DocumentText,...

Как добавить узел в документ XML не загружая в память весь документ
Вот собственно вопрос сейчас использую XDocument. То есть формирую узел...

8
Dexter
286 / 146 / 34
Регистрация: 13.10.2009
Сообщений: 164
15.03.2011, 18:54 #2
А зачем такой цикл делать если есть встроенное ожидание такого события?

C#
1
2
3
4
5
6
7
8
9
10
11
12
private void button2_Click(object sender, EventArgs e)
        {
            WebBrowser wb = new WebBrowser();
            wb.ProgressChanged += new WebBrowserProgressChangedEventHandler(wb_ProgressChanged);
            wb.Navigate("http://ya.ru/");
        }
 
        void wb_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
        {
            WebBrowser wb = (WebBrowser)sender;
            if (wb.ReadyState == System.Windows.Forms.WebBrowserReadyState.Complete && wb.DocumentText.Contains("Яндекс")) MessageBox.Show(wb.DocumentTitle); 
        }
А не меняется значение, потому что в первом случае ваш цикл намертво вешает поток и wb просто не может загрузиться, а во втором случае - видать интернет быстрый и за то время пока вы нажмете кнопку, то оно успевает загрузить сайт.
0
miachka
4 / 4 / 0
Регистрация: 11.08.2010
Сообщений: 28
15.03.2011, 18:56  [ТС] #3
Цитата Сообщение от Dexter Посмотреть сообщение
А зачем такой цикл делать если есть встроенное ожидание такого события?
А не меняется значение, потому что в первом случае ваш цикл намертво вешает поток и wb просто не может загрузиться, а во втором случае - видать интернет быстрый и за то время пока вы нажмете кнопку, то оно успевает загрузить сайт.
Без цикла тоже не работает. Собственно, поэтому я его и приплела, типа документ очень тяжелый и долго грузится.
Хотя, какая альтернатива циклу, которая не вешает поток?

Что-то я туплю. Мне вообще нужно проверить работает инет или нет, и если работает делать код.
0
Dexter
286 / 146 / 34
Регистрация: 13.10.2009
Сообщений: 164
15.03.2011, 19:00 #4
Выше же написал, даже код привел....

WebBrowser::ProgressChanged - событие
.NET Framework 4
Другие версии

* .NET Framework 3.5

Происходит при обновлении в элементе управления WebBrowser данных о ходе загрузки документа, в который выполняется переход.
Оно же в мсдн


Что-то я туплю. Мне вообще нужно проверить работает инет или нет, и если работает делать код.
Как по мне проверять работает ли инет, намного проще пингом, чем загрузкой страниц.
0
miachka
4 / 4 / 0
Регистрация: 11.08.2010
Сообщений: 28
15.03.2011, 19:01  [ТС] #5
Dexter, а можно это как-то в одной процедуре делать?
0
Dexter
286 / 146 / 34
Регистрация: 13.10.2009
Сообщений: 164
15.03.2011, 19:07 #6
В одной процедуре делать что?

Можно пропинговать сайт и если есть ответ - делать какой-то код.

Или ожидать окончание загрузки сайта?

C#
1
2
3
4
5
6
Ping q=new Ping();
PingReply an = q.Send("ya.ru");
if (an.Status == IPStatus.Success)
  MessageBox.Show("есть инет");
else
  MessageBox.Show("нет инета");
2
miachka
4 / 4 / 0
Регистрация: 11.08.2010
Сообщений: 28
15.03.2011, 19:31  [ТС] #7
Dexter, спасибо за идею с пингом. Я как раз с ним разобралась только) Правда у меня как-то посложнее вышло.
Пойду еще веббраузер доосилю.
1
miachka
4 / 4 / 0
Регистрация: 11.08.2010
Сообщений: 28
16.03.2011, 22:31  [ТС] #8
Вопрос решился следущим образом.

C#
1
2
wb.Navigate(url);
while (wb.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents();
2
lefrench
0 / 0 / 0
Регистрация: 13.03.2015
Сообщений: 1
13.03.2015, 13:31 #9
а у меня другая проблема.
webbrowser.navigate("https://webcare.tele2.ru/c/portal/login?k=2 ");
не прогружает сайт, пустой. Также https://www.yandex.ru пустой.
Попробовал впихнуть левый сайт, прогрузил.
Что может быть не так ?
0
13.03.2015, 13:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2015, 13:31

Как перегрузить метод контролла webBrowser1.Navigate
дайте пожалуйста пример как перегрузить метод контрола webBrowser1.Navigate("")...

Сохранение содержимого webbrowser без диалога
Здрасте уважаемые гуру! Суть проблемы, у меня в webbrowser отображается .html...

Закрытие формы без вывода сообщения
Всем привет! Проблема такая: Когда я создаю файл и он пуст,то форма...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru