C#:在事件发生之前停止循环

时间:2011-07-12 00:29:02

标签: c# events loops for-loop load

我有一个for循环,里面有一个浏览器的导航方法。并且它假设加载不同的站点,但问题是它将开始加载1个站点,在它加载它之前,它将加载另一个站点。所以我需要暂停它直到它完成。

我开始写一个事件,当ProgressChanged事件达到100%时......我认为我不知道下一步该做什么,但我认为这是一个开始。 请帮忙,谢谢!

编辑:我正在使用表格,正如罗兰所说。

1 个答案:

答案 0 :(得分:3)

我假设您正在进行Windows窗体编程。你想要的事件是DocumentCompleted这是一个例子:

public Uri MyURI { get; set; }

public Form1()
{
    InitializeComponent();

    MyURI = new Uri("http://stackoverflow.com");
    webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
    webBrowser1.Url = MyURI;
}

void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    if(e.Url == MyURI)
        MessageBox.Show("Page Loaded");
}

对于URI的列表,它是直接的。

public int CurrentIndex = 0;
List<Uri> Uris;

public Form1()
{
    InitializeComponent();

    Uris = new List<Uri> { new Uri("http://stackoverflow.com"), new Uri("http://google.com/") };

    webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);

    webBrowser1.Url = Uris[CurrentIndex];
}

void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    WebBrowser browser = (WebBrowser)sender;
    if (e.Url == Uris[CurrentIndex])
    {
        CurrentIndex++;
        if (CurrentIndex < Uris.Count)
        {
            browser.Url = Uris[CurrentIndex];
        }
    }
}