System.NullReferenceException将变量传递给另一个类/表单时

时间:2015-05-26 18:53:03

标签: c# forms nullreferenceexception

我正忙于C#中涉及2个Windows窗体的项目。 该程序要求用户在文本栏中输入主题,然后用户从3个网站中选择搜索并显示视频。

这是第一种形式的代码,

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();
}

当值通过switch / case传递给新表单时,会发生错误。

我已调试程序并在public Results(String Search, int WebSite, String Category)行上有一个断点,我确保正在发送和接收值。

1 个答案:

答案 0 :(得分:4)

在切换之前移动InitializeComponent()方法调用。我认为webBrowser1尚未初始化,当您调用null方法时,其值为Navigate(...)