为什么在'foreach`循环中中断后价值会丢失?

时间:2016-05-13 07:51:11

标签: c#

我有一个按钮btnRun来执行timer1。在timer1我希望获得元素的id,然后插入像" blah blah"进入这个元素。

它在工作。 但是,在第二次点击btnRun时,webBrowser2.Document会丢失值。 timer必须有。

那么,如何保持webBrowser2.Document值的所有时间,因为我会多次点击btnRun

我只在申请表中声明:

private WebBrowser webBrowser2;

我要点击另一个按钮。

this.webBrowser2.Navigate(" http://example.com&#34);

private void btnRun_Click(object sender, EventArgs e)
{
    this.timer1.Start();
}

private void timer1_Tick(object sender, EventArgs e)
{
    this.count++;
    string str = "";
    if (this.count >= this.line.Count<string>())
    {
        this.count = 0;
        str = this.line[0];
    }
    else
    {
        try
        {
            str = this.line[this.count];
        }
        catch
        {
        }
    }
    int num = new Random().Next(0x186a0, 0x5f5e0ff);
    try
    {
        string str2;
        string str3;
        HtmlElementCollection elementsByTagName;

        int values = 0;
        values = (str.Length - str.Split(new char[] { '*' })[1].Length) - 1;
        str2 = "http://example.com" + str.Split(new char[] { '*' })[0].Substring(0, values) + "&text=*" + str.Split(new char[] { '*' })[1] + "&rand=" + num.ToString();
        str3 = this.code(str2);
        if (str3 == "")
            return;
        List<string> list = new List<string>();
        MatchCollection matchs = Regex.Matches(str3, "(<a.*?>.*?</a>)", RegexOptions.Singleline);
        foreach (Match match in matchs)
        {
            if (!list.Contains(match.Groups[1].Value))
            {
                string str5 = match.Groups[1].Value;
                if (str5.Contains("javascript:foward_information"))
                {
                    string[] strArray = str5.Split(new char[] { '\'' });
                    if (strArray[3] == "0")
                    {
                        string str6 = strArray[1];
                        this.timer1.Stop();
                        this.webBrowser2.Document.GetElementById("txtCode").InnerText = str6;
                        elementsByTagName = this.webBrowser2.Document.GetElementsByTagName("input");

                        foreach (HtmlElement element in elementsByTagName)
                        {
                            if (element.GetAttribute("id").Equals("cmdGit"))
                            {
                                element.InvokeMember("Click");

                                //var objWin = window.self;
                                //objWin.open('', '_self', '');
                                //objWin.close();
                            }
                        }
                        this.timer1.Stop();
                    }
                }
            }
        }
    }
    catch(Exception ex)
    {
        throw ex;
    }
}

2 个答案:

答案 0 :(得分:1)

你试图打破计时器,而不是使用计时器控制的Stop()来停止计时器。

 this.timer1.Stop();

答案 1 :(得分:0)

您的部分代码是调用页面上的按钮。这将从Web服务器重新加载页面;通过这样做,它将重置页面上的任何值。

很难提供进一步的建议,因为我不明白你想要做什么。