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
...
}
我正在尝试向 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
...
}