2013-06-06 4 views
0

Я программирую WebBrowser на C#, и у меня есть следующая проблема: При нажатии кнопки в tabControl1 с помощью WebBrowser создается новая tabPage.Progress Bar, работающий с WebBrowser, сгенерированный кодом C#

private void button3_Click(object sender, EventArgs e) 
    { 
     WebBrowser browser = new WebBrowser(); 
     browser.Dock = DockStyle.Fill; 
     browser.Url = new System.Uri("http://google.com"); 
     tabControl1.TabPages.Add(new TabPage("Aba "+ (tabControl1.TabCount + 1).ToString())); 
     tabControl1.TabPages[tabControl1.TabCount - 1].Controls.Add(browser); 

    } 

Мне нужно знать, как сделать прогресс бар работы с веб-браузера, который принадлежит к текущему активному TabPage. Как и где я могу вставить следующий код:

toolStripProgressBar1.Maximum = (int) e.MaximumProgress; 
toolStripProgressBar1.Value = (int)e.CurrentProgress; 
+0

Ответ здесь http://stackoverflow.com/questions/11814523/how-to-make-progress-bar-works-while-web-browser-navigating – dsfgsho

+0

я не использую фиксированный WebBrowser как в ссылке, которую вы отправили. В моей программе WebBrowser генерируется в коде. Если я напишу код в webBrowser1.ProgressChanged, он будет работать только в webBrowser1, а другие вкладки не будут взаимодействовать с индикатором выполнения –

ответ

2

Вы можете использовать анонимную функцию:

WebBrowser browser = new WebBrowser(); 
browser.Dock = DockStyle.Fill; 
browser.Url = new System.Uri("http://google.com"); 
tabControl1.TabPages.Add(new TabPage("Aba " + (tabControl1.TabCount + 1).ToString())); 
tabControl1.TabPages[tabControl1.TabCount - 1].Controls.Add(browser); 
browser.ProgressChanged += new WebBrowserProgressChangedEventHandler(delegate (object sender, WebBrowserProgressChangedEventArgs events) 
    { 
     if ((int)events.CurrentProgress > 0) 
     { 
      toolStripProgressBar1.Maximum = (int)events.MaximumProgress; 
      toolStripProgressBar1.Value = (int)events.CurrentProgress; 
     } 
    }); 
0

У меня была проблема с дроблением причиной в ProgressBar был готов полный, так вот эта проблема решена.

private void webBrowser1_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e) 
    { 
     if ((int)e.CurrentProgress > 0) 
     { 
      ProgressBar.Maximum = (int)e.MaximumProgress; 
      if (ProgressBar.Maximum == (int)e.MaximumProgress) 
       ProgressBar.Value = 0; 
      ProgressBar.Value = (int)e.CurrentProgress;     
     } 
    } 
+0

, но не так, если кто-то получает ту же ошибку, что и я ...: d – Alexander