C#- 在 'enclosing' 局部范围内使用变量?

C#- using a variable in an 'enclosing' local scope?

我正在尝试向 C# 应用程序添加一些新功能 - 特别是,试图复制它的某些行为,但在 Web 浏览器中,而不是在应用程序中,就像现在一样。

我正在尝试从 MainWindow.cs class.

中的方法内部调用 Browser.cs class 中定义的方法

方法在 Browser.cs 中定义为:

public partial class Browser : Form{
    public Browser(){
        ...
    }
    public void Browser_Load(object sender, EventArgs e){
        webKitBrowser1.Navigate("https://google.com");
    }
    ...
}

然后我尝试从 MainWindow.cs 调用它,如下所示:

public partial class MainWindow : Window{
    ...
    public MainWindow(){
        ...
        Browser mBrowser = new Browser();
        Object sender = new Object();
        EventArgs e = new EventArgs();
        mBrowser.Browser_Load(sender, e);
        ...
    }
    ...
}

但是,我收到一个编译错误:

A local or parameter named 'e' cannot be declared in this scope because that name is used in an enclosing local scope to define a local or parameter

这是什么意思?我以前从未遇到过这个错误——我在声明它的同一范围内使用变量——'enclosing local scope' 是什么意思?那是因为我在括号内使用 e 来调用 mBrowser.Browser_Load(sender, e) 的方法吗?

当然,因为调用此方法的范围与我定义的范围相同 e,所以不应该是范围问题?

我确实尝试通过以下方式执行呼叫:

mBrowser.Browser_Load(sender, EventArgs e);

但这给了我一个编译错误:

'EventArgs' is a type, which is not valid in the given context.

谁能指出我在这里做错了什么,以及我应该怎么做才能正确调用此方法?

您的范围内已有一个名为 e 的变量。

尝试像这样调用你的方法

mBrowser.Browser_Load(this, EventArgs.Empty);

错误应该消失了。

错误很明显,您已经在范围内定义了 e 命名变量,(可能在您未显示的代码部分) .

但更重要的是,您不应该那样调用 Load 事件,而是 在单独的方法中提取功能并从您的 中调用方法 =12=]活动等地。

喜欢:

public void SomeMethodToBeCalledOnLoad()
{
    webKitBrowser1.Navigate("https://google.com");
}

public void Browser_Load(object sender, EventArgs e)
{
    SomeMethodToBeCalledOnLoad();
}

public MainWindow(){
    ...
    Browser mBrowser = new Browser();
    Object sender = new Object();
    EventArgs e = new EventArgs();
    SomeMethodToBeCalledOnLoad();//here
    ...
}