【发布时间】:2016-04-27 14:35:58
【问题描述】:
我正在尝试向 C# 应用程序添加一些新功能,特别是尝试复制它的一些行为,但在 Web 浏览器中,而不是在当前的应用程序中。
我正在尝试从 MainWindow.cs 类的方法内部调用已在 Browser.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' 是一种类型,在给定的上下文中无效。
谁能指出我在这里做错了什么,以及我应该做些什么才能正确调用这个方法?
【问题讨论】:
-
你的方法中有
catch(Exception e)之类的东西吗? -
您在同一范围内使用了两个名为 e 的变量。通常由于调用 e 的事件以及异常而发生。将您的例外更改为 ex,或将您的事件从 e 重命名为 event,您会没事的。如果您只需要具有默认属性的默认 EventArgs 对象,您也可以使用EventArgs.Empty。
-
太棒了-错过了我也将
Exception称为“e”-非常感谢! -
mBrowser.Browser_Load(sender, EventArgs e);无效,您必须使用mBrowser.Browser_Load(sender, e);,只是说
标签: c# wpf scope variable-declaration