我正在尝试向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");
}
...
}
然后我尝试从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);
...
}
...
}
但是,我收到的编译错误是:
无法在此范围内声明名为“e”的本地或参数,因为该名称用于封闭的本地范围以定义本地或参数
这是什么意思?我之前从未遇到过这个错误 - 我在同一范围内使用变量,因为它已被声明 - 它是什么意思'封闭本地范围'?是因为我在括号内使用e
来调用mBrowser.Browser_Load(sender, e)
的方法吗?
当然,由于对此方法的调用与我定义e
的范围相同,因此它不应该是范围问题?
我尝试使用以下方式执行调用:
mBrowser.Browser_Load(sender, EventArgs e);
但这给了我一个编译错误说:
'EventArgs'是一种类型,在给定的上下文中无效。
任何人都可以指出我在这里做错了什么,以及我应该做些什么才能正确调用此方法?
答案 0 :(得分:5)
错误很明显,您已在范围中定义了e
命名变量(可能在您尚未显示的代码部分中)。
但更重要的是,您不应该像这样调用Load
事件,而是在单独的方法中提取功能并从{{1}调用方法事件和其他地方。
像:
Load
答案 1 :(得分:0)
您已在范围内拥有名为e
的变量。
尝试像这样调用你的方法
mBrowser.Browser_Load(this, EventArgs.Empty);
并且应该出错。