listbox do webBrowser

0
 private void button3_Click(object sender, EventArgs e)
        {

            if (listBox2.Items != null && listBox2 != null)
            {
                foreach (object item in listBox2.Items)
                {
                    webBrowser1.Navigate(item.ToString());
                    
                }
            }
            
            
        }

Jak każdy item z listBoxa załadować do webBrowsera, przeczekać, aż się załaduje i robić to samo z kolejnym?

0

Dokładnie tak jak napisałeś z tym, że w tym przypadku widoczna będzie zawsze tylko ostatnia strona z listy.
Jakbyś chciał widzieć kilka stron na raz to musisz stworzyć kilka obiektów webBrowser

0

Hm... jednak ja nie chce kilku kontrolek, chcę jeden webBrowser, a do niego kolejno wszystkie itemy z listBoxa.
Mamy listBox:
Google.pl
YouTube.com
4programmers.net

Chcę, aby załadowało Google, jak już to zrobi, przechodzi do YouTube, a następnie do 4programmers.

0
Bukkake is funny napisał(a)

Hm... jednak ja nie chce kilku kontrolek, chcę jeden webBrowser, a do niego kolejno wszystkie itemy z listBoxa.
Mamy listBox:
Google.pl
YouTube.com
4programmers.net

Chcę, aby załadowało Google, jak już to zrobi, przechodzi do YouTube, a następnie do 4programmers.

Czyli kod, który napisałeś to robi i w rezultacie widziesz na końcu wczytaną stronę 4programmers.net

0

Ale nie wczytuje poprzednich stron

0

Już ostatni raz Ci tłumacze jak chcesz widzić x stron na raz to musisz utworzyć x obiektów webBrowser. Koniec.

Ps. jak pisze przeglądarke internetową to tu masz ciekawy artykuł: http://www.codeproject.com/KB/cs/WBrowser.aspx

0

Ale.. ja nie chcę widzieć tych stron na raz.
Ja chcę załadować pierwszą stronę, jak się załaduje, na jej miejscu ma się pojawić kolejna.
Jeden webBrowser, kilka stron kolejno. Google.pl załadowane -> ładuje YouTube -> załadowane -> ładuje WP.pl itd.

0

No to musisz użyć funkcji Sleep(), jak poniżej:

 
private void button3_Click(object sender, EventArgs e)
        {

            if (listBox2.Items != null && listBox2 != null)
            {
                foreach (object item in listBox2.Items)
                {
                    webBrowser1.Navigate(item.ToString());                    
                    Thread.Sleep(5000);
                }
            }                        
        }
0

Czeka 5 sekund, ale ładuje od razu ostatni adres, a pozostałe pomija.

0

no to ustaw na 15 sekund (15000), no i zakładam że w tym listBox'ie rzeczywiście masz kilka adresów a nie tylko jeden?

0
Gregory_Scot napisał(a)

if (listBox2.Items != null && listBox2 != null)


Trochę z dupy ten warunek, nie sądzisz?


 > ##### Bukkake is funny napisał(a)
> Czeka 5 sekund, ale ładuje od razu ostatni adres, a pozostałe pomija.

Jak to sprawdziłeś?
0

@somekind,

private void button3_Click(object sender, EventArgs e)
        {
 
            if (listBox2.Items != null && listBox2 != null)
            {
                foreach (object item in listBox2.Items)
                {
                    webBrowser1.Navigate(item.ToString());                    
                    Thread.Sleep(5000);
                }
            }                        
        }
0

No ale to jest niby to sprawdzenie? Ten WebBrowser się w ogóle odświeża? Przecież natychmiast usypiasz wątek GUI po odpaleniu Navigate...

0

Przecież natychmiast usypiasz wątek GUI po odpaleniu Navigate...

Wybacz, nie za bardzo cię rozumiem.

0

W WebBrowser masz zdarzenie ktore informuje Ciebie kiedy storna zostanie wczytana. Mozesz uzyc jakiejs zmiennej typu Boolean i widzec kiedy dokument zostanie zaladowany do kontrolki.

0
Bukkake is funny napisał(a)

Przecież natychmiast usypiasz wątek GUI po odpaleniu Navigate...

Wybacz, nie za bardzo cię rozumiem.

Thread.Sleep sprawia, że wątek nie może nic zrobić, w tym przypadku nie może zmienić tego, co wyświetla kontrolka WebBrowser.

Można spróbować coś takiego:

 
using System.Threading;
using System.Windows.Forms;

namespace WindowsFormsApplication9
{
    public partial class Form1 : Form
    {
        string[] sites = { "http://google.pl", "http://wp.pl", "http://o2.pl", "http://bash.org.pl", "http://joemonster.org" };
        int currentSite = 0;

        public Form1()
        {
            InitializeComponent();
            this.LoadNextSite();
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            this.LoadNextSite();
        }

        private void LoadNextSite()
        {
            if (this.currentSite < this.sites.Length)
            {
                this.webBrowser1.Navigate(this.sites[this.currentSite]);
                this.currentSite++;
                Thread.Sleep(5000);
            }
        }
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1