0
我忙於在C#中涉及2個Windows窗體的項目。 該程序要求用戶在文本欄中輸入主題,然後用戶從3個網站中進行選擇以搜索並顯示視頻。System.NullReferenceException將變量傳遞給另一個類/窗體
這是第一種形式的代碼,
private void btnSearch_Click(object sender, EventArgs e)
{
//Assign Search
Search = SearchBox.Text;
//Assign Website
if (rb1YouTube.Checked)
{
WebSite = 1;
}
else if (rb2MetaCafe.Checked)
{
WebSite = 2;
}
else if (rb3Yahoo.Checked)
{
WebSite = 3;
}
//Assign Category
Category = " - " + cbCategory.Text;
//Input Validation
if (Search == "" || Category == " - " || WebSite == 0)
{
System.Windows.Forms.MessageBox.Show("All fields require values");
}
else
{
//Declare class and pass variables
Results RF = new Results(Search, WebSite, Category);
RF.Show();
}
}
這裏是從第二個代碼。
public Results(String Search, int WebSite, String Category)
{
try
{
switch (WebSite)
{
case 1: webBrowser1.Navigate("https://www.youtube.com/");
break;
case 2: webBrowser1.Navigate("http://www.metacafe.com/");
break;
case 3: webBrowser1.Navigate("https://screen.yahoo.com/");
break;
}
}
catch(Exception E)
{
MessageBox.Show(" " + E);
}
InitializeComponent();
}
將值傳遞到新窗體後,通過開關/大小寫運行後,會發生錯誤。
我已經調試了程序,並在public Results(String Search, int WebSite, String Category)
行上有了一個斷點,我確保這些值正在發送和接收。
這是你的答案。初始化組件通過您的designer.cs類運行並初始化所有控件。因此,當你的代碼運行後,像webBrowser1這樣的東西將是空的...因此NullReferenceException。剪切+粘貼並固定。 –
@MarkMcGookin確實如此。 –
'InitializeComponent'不應該在方法*中,它應該只在構造函數中。 –