mosifallah Ответов: 2

Как вернуть значение метода после завершения загрузки webbrowser


Я хочу создать класс whit method, который используется для чтения строки с веб-страницы и возврата метода, но я не могу написать это.:-(





например :

webparsing reader=новый webparsing();
строка=читатель.читать();
<pre>namespace WindowsFormsApplication6
{
    class webparsing
    {

        private System.Windows.Forms.WebBrowser webBrowser1;
        private void initial()
        {
            this.webBrowser1 = new System.Windows.Forms.WebBrowser();
            webBrowser1.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
            webBrowser1.Navigate("http:\\google.com");
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            //do any
        }

        public string read()
        {
            initial();
            
            return webBrowser1.Document.GetElementById("lst-ib").InnerText;
        }


Что я уже пробовал:

Я читаю текст из текстового поля и возвращаюсь, но не жду завершения веб-страницы.как написать этот код?

mosifallah

о танки это очень хорошо .... спасибо спасибо

Karthik_Mahalingam

добро пожаловать

2 Ответов

Рейтинг:
11

mosifallah

это ответ большое спасибо

Karthik Bangalore 

  bool IsReady;
 void Go()
 {
     IsReady = false;
     brw.Navigate("url");
     do
     {
         Thread.Sleep(10);
         Application.DoEvents();
     } while (!IsReady);
 }

void brw_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
 {
     IsReady = true;
 }


Рейтинг:
1

OriginalGriff

Когда загрузка завершается, вы получаете событие DocumentCompleted - или вы бы это сделали, если бы этот код был скомпилирован, чего не будет. Вы получаете от компилятора ошибку "нераспознанная escape-последовательность", поэтому исполняемый файл не генерируется. Начните с изменения его на этот:

webBrowser1.Navigate("listname.html");
и посмотрите, поможет ли это - вероятно, это не поможет, если только ваш файл не находится в исполняемом каталоге, но это ваша проблема, а не моя! :смеяться:

Таким образом, даже если вы исправите это, и он найдет файл, загрузка не произойдет мгновенно: вам нужно получить свой элемент в обработчике, а не несвязанный метод.
В обработчике вы можете установить текстовое поле с помощью метода SetAttribute:
HtmlDocument doc = webBrowser1.Document;
doc.GetElementById("myId").SetAttribute("Value", "Text I want in the text box");