[英]Formatting a field using attributes in C#- DisplayFormatAttribute?
[英]C#- using a variable in an 'enclosing' local scope?
我正在嘗試向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'是一種類型,在給定的上下文中無效。
誰能指出我在這里做錯了什么,以及應該如何才能正確調用此方法?
錯誤很明顯,您已經在范圍內定義了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
...
}
您已經在作用域中有一個名為e
的變量。
嘗試像這樣調用您的方法
mBrowser.Browser_Load(this, EventArgs.Empty);
錯誤應該消失了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.