C# - 在'封闭'本地范围内使用变量?

Nob*_*fer 1 c# wpf scope variable-declaration

我尝试了一些新的功能添加到尤其是C#应用程序 - ,试图复制它的一些行为,但在Web浏览器,而不是应用程序,因为它是目前.

我试图Browser.cs从类中的方法内部调用已在类中定义的方法MainWindow.cs.

该方法定义Browser.cs如下:

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

然后我尝试从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);
        ...
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

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

无法在此范围内声明名为"e"的本地或参数,因为该名称用于封闭的本地范围以定义本地或参数

这是什么意思?我之前从未遇到过这个错误 - 我在同一范围内使用变量,因为它已被声明 - 它是什么意思'封闭本地范围'?是因为我e在括号内使用方法调用mBrowser.Browser_Load(sender, e)吗?

当然,由于对此方法的调用与我定义的范围相同e,因此它不应该是范围问题?

我确实尝试使用以下方式执行调用:

mBrowser.Browser_Load(sender, EventArgs e);
Run Code Online (Sandbox Code Playgroud)

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

'EventArgs'是一种类型,在给定的上下文中无效.

任何人都可以指出我在这里做错了什么,以及我应该做些什么才能正确调用此方法?

Hab*_*bib 6

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

但更重要的是,您不应该Load像这样调用事件,而是在单独的方法中提取功能,并Load事件和其他位置调用该方法.

喜欢:

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
    ...
}
Run Code Online (Sandbox Code Playgroud)