C# 当前上下文中不存在名称“webBrowser”

C# 当前上下文中不存在名称“webBrowser”,c#,.net,C#,.net,我有以下代码: public void button1_Click(object sender, EventArgs e) { for(int i = 0; i < numericUpDown1.Value; i++) { WebBrowser webBrowser = new WebBrowser(); webBrowser.Visible = false; webBrowser.ScriptErrorsSuppressed

我有以下代码:

public void button1_Click(object sender, EventArgs e)
{
    for(int i = 0; i < numericUpDown1.Value; i++)
    {
        WebBrowser webBrowser = new WebBrowser();
        webBrowser.Visible = false;
        webBrowser.ScriptErrorsSuppressed = true;
        webBrowser.Navigate("want to keep it private.");
        webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);
    }
}

public void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    HtmlElement botNick = webBrowser.Document.GetElementById("nick");
    botNick.SetAttribute("value", textBox1.Text);

    HtmlElement botPlay = webBrowser.Document.GetElementsByTagName("button")[2];
    botPlay.InvokeMember("click");
}

为什么我得到的名称webBrowser在当前上下文中不存在?

首先,名称webBrowser在当前上下文中不出现错误意味着您可能尚未在当前上下文中定义此类变量/字段/属性/等

第二,由于您尚未澄清错误行,我将假定它出现在以下两行:

HtmlElement botNick = webBrowser.Document.GetElementById("nick");
HtmlElement botPlay = webBrowser.Document.GetElementsByTagName("button")[2];
发生这种情况的原因是,当您在此处声明webBrowser时:

存在于函数void button1\u Clickobject sender、EventArgs e中 因此对函数void webBrowser_DocumentCompletedobject sender WebBrowserDocumentCompletedEventArgs e不可见。
要纠正这种情况,您可以将webBrowser作为参数传递,或者在后一个函数中定义一个名为webBrowser的新变量

它的作用域是button1_Click事件处理程序。是什么让您认为在一个函数中定义的局部变量在另一个函数中可用?@Marc B我能做什么?@Aarivex,事件处理程序的sender参数包含触发事件的对象-对于DocumentCompleted事件,这将是WebBrowser对象,您很可能希望在WebBrowser_DocumentCompleted方法中使用该对象。。。
WebBrowser webBrowser = new WebBrowser();