对象引用未设置为对象c#打开新表单的实例

时间:2014-04-14 15:14:38

标签: c#

  1. 询问用户的用户名和密码
  2. 点击按钮,它会检查为此用户名和密码连接的数据库
  3. 如果正确,则将其ID号存储在变量中,默认情况下此变量为0。
  4. 然后我运行一个If语句,如果ID为> = 0,则需要打开另一个表单。如果没有,则显示错误信息。
  5. MessageBox in first If case显示正确的ID(1,2,3无论如何) 现在然后在Form3上,只需一个简单的textbox1.text =" hi&#34 ;;给了我错误:

      

    对象引用未设置为对象c#的实例。它会显示文本框行。

        int IDnumber = 0;
    
            SqlCommand dataCommand = new SqlCommand(" SELECT ID FROM leden WHERE [Username]='" + username_txt.Text + "' and [Password]='" + password_txt.Text + "'", SC);
            SC.Open();
            IDnumber = Convert.ToInt32(dataCommand.ExecuteScalar());
            SC.Close();
    
            if (IDnumber >= 1)
            {
                MessageBox.Show("Logged in, welcome ID number:" + IDnumber, "test");
                Form3 f3 = new Form3(IDnumber);
                f3.Show();                 
            }
            else
            {
                MessageBox.Show("Wrong Username and/or Password");
            }
    
    }
    

    form3:

    public Form3(int _IDnumber)
    {
        int IDnumber = _IDnumber;
        textBox1.Text = "hi";
    }
    

    当然,文本框是一个测试,以表明我使用的文本框并不重要,它只是给了我这个错误。 是的,我仍然使用未加密的密码,但不知道该怎么做

2 个答案:

答案 0 :(得分:4)

您尚未初始化表单上的组件。 添加

InitializeComponent();

在你的构造函数的开头。

答案 1 :(得分:0)

在Forms构造函数中设置控件不是明智之举,而是在OnLoad事件中实现这些内容。

MSDN:http://msdn.microsoft.com/en-us/library/360kwx3z(v=vs.90).aspx,你不想把代码放在构造函数中,使用OnLoad。