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'是一种类型,在给定的上下文中无效.
任何人都可以指出我在这里做错了什么,以及我应该做些什么才能正确调用此方法?
错误很明显,您已经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)