Button_Click(C#,VisualStudio,WinForms)上的参数无效错误

时间:2020-07-04 05:16:45

标签: c# visual-studio winforms visual-studio-2013

我有一个登录表单,该表单会指向主菜单表单。但是,当我单击“登录”按钮时,出现“参数无效”错误。之前从未出现过,直到昨晚才开始。这是我的Login和MainMenu表单及其代码。

登录:

Login Form

代码:

public frmLogin()
        {
            InitializeComponent();
        }

        string un;
        string pw;

        private void btnLogin_Click(object sender, EventArgs e)
        {
            try
            {
                con.Open();
                string sql = "select * from Details";
                com = new SqlCommand(sql, con);
                SqlDataReader dr;
                dr = com.ExecuteReader();
                dr.Read();
                un = dr["UserN"].ToString();
                pw = dr["PassW"].ToString();
                if (txtUn.Text == un && txtPw.Text == pw)
                {
                    frmMainMenu MainMenu = new frmMainMenu();
                    this.Hide();
                    MainMenu.Show();
                }
                else
                {
                    MessageBox.Show("Username or Password is incorrect");
                    txtPw.Text = "";
                    txtUn.Text = "";
                    txtUn.Focus();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);                
            }
            con.Close();
        }
                
        private void frmLogin_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }

        private void lblForgot_MouseEnter(object sender, EventArgs e)
        {
            lblForgot.ForeColor = Color.Crimson;
        }

        private void lblForgot_MouseLeave(object sender, EventArgs e)
        {
            lblForgot.ForeColor = Color.Red;
        }

        private void lblForgot_Click(object sender, EventArgs e)
        {
            frmForgotPw ForgotPw = new frmForgotPw();
            this.Hide();
            ForgotPw.Show();
        }

    }

主菜单:

Main Menu

代码:

public partial class frmMainMenu : Form
    {
        SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=F:\DinerXP\DinerXP\Details.mdf;Integrated Security=True");
        SqlCommand com;

        //Globally creating objects from Forms Class to use in all Click events
        frmAbout About = new frmAbout();
        frmBank Bank = new frmBank();
        frmReservations Reservations = new frmReservations();
        frmOrders Orders = new frmOrders();
        frmEmployees Employees = new frmEmployees();
        frmInvMng Inventory = new frmInvMng();
        frmMenus Menus = new frmMenus();
        frmTodaysMenu TodaysMenu = new frmTodaysMenu();

        public frmMainMenu()
        {
            InitializeComponent();
        }


        //Close application on FormClosed

        private void frmMainMenu_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }


        //Change Header Label:

        private void frmMainMenu_Load(object sender, EventArgs e)
        {
            int income;

            con.Open();
            string sql = "select Name from Details";
            com = new SqlCommand(sql, con);
            SqlDataReader dr;
            dr = com.ExecuteReader();
            dr.Read();
            lblRestNa.Text = dr["Name"].ToString();
            con.Close();            
        }
          

        //Button-Click Events:

        private void btnReserv_Click(object sender, EventArgs e)
        {
            Reservations.Show();
            this.Hide();
        }

        private void btnTodaysMenu_Click(object sender, EventArgs e)
        {
            this.Hide();
            TodaysMenu.Show();
        }

        private void btnBank_Click(object sender, EventArgs e)
        {
            this.Hide();
            Bank.Show();
        }

        private void btnOrders_Click(object sender, EventArgs e)
        {
            this.Hide();
            Orders.Show();
        }

        private void btnEmployees_Click(object sender, EventArgs e)
        {
            this.Hide();
            Employees.Show();
        }

        private void btnInventory_Click(object sender, EventArgs e)
        {
            this.Hide();
            Inventory.Show();
        }

        private void btnMenus_Click(object sender, EventArgs e)
        {
            this.Hide();
            Menus.Show();
        }

        private void btnAbout_Click(object sender, EventArgs e)
        {
            this.Hide();
            About.Show();
        }


        //Picture click Events:

        private void picReserv_Click(object sender, EventArgs e)
        {
            this.Hide();
            Reservations.Show();
        }

        private void picTodaysMenu_Click(object sender, EventArgs e)
        {
            this.Hide();
            TodaysMenu.Show();
        }

        private void picBank_Click(object sender, EventArgs e)
        {
            this.Hide();
            Bank.Show();
        }

        private void picOrders_Click(object sender, EventArgs e)
        {
            this.Hide();
            Orders.Show();
        }

        private void picEmployees_Click(object sender, EventArgs e)
        {
            this.Hide();
            Employees.Show();
        }

        private void picInventory_Click(object sender, EventArgs e)
        {
            this.Hide();
            Inventory.Show();
        }

        private void picMenus_Click(object sender, EventArgs e)
        {
            this.Hide();
            Menus.Show();
        }

        private void picInfo_Click(object sender, EventArgs e)
        {
            this.Hide();
            About.Show();
        }


        //Label Click Events:

        private void lblReservations_Click(object sender, EventArgs e)
        {
            this.Hide();
            Reservations.Show();
        }

        private void lblTodaysMenu_Click(object sender, EventArgs e)
        {
            this.Hide();
            TodaysMenu.Show();
        }
        
        private void lblBank_Click(object sender, EventArgs e)
        {
            this.Hide();
            Bank.Show();
        }

        private void lblOrders_Click(object sender, EventArgs e)
        {
            this.Hide();
            Orders.Show();
        }

        private void lblEmployees_Click(object sender, EventArgs e)
        {
            this.Hide();
            Employees.Show();
        }

        private void lblInvMng_Click(object sender, EventArgs e)
        {
            this.Hide();
            Inventory.Show();
        }

        private void lblMenus_Click(object sender, EventArgs e)
        {
            this.Hide();
            Menus.Show();
        }

        private void lblAbout_Click(object sender, EventArgs e)
        {
            this.Hide();
            About.Show();
        }
    }

顺便说一句,图片在图片框中。所有帮助表示赞赏。即使您只解释“参数无效”的确切含义。

2 个答案:

答案 0 :(得分:0)

根据我的测试,您的代码仅适用于第一个用户名和密码。我们需要使用while语句在数据库中进行循环。

我已经修改了您的代码,现在效果很好。

请检查以下代码。

 private void button1_Click(object sender, EventArgs e)
        {    
            string constr = @"";
            SqlConnection con = new SqlConnection(constr);
            try
            {
                con.Open();
                string sql = "SELECT * FROM Details where UserN=@UserN and PassW=@PassW";
                SqlParameter pUser = new SqlParameter("@UserN", txtUserName.Text);
                SqlParameter pPass = new SqlParameter("@PassW", txtPwd.Text);
                SqlCommand com = new SqlCommand(sql, con);
                com.Parameters.Add(pUser);
                com.Parameters.Add(pPass);
                SqlDataReader  dr = com.ExecuteReader();
                if(dr.Read())
                {
                    MainMenu MainMenu = new MainMenu();
                    this.Hide();
                    MainMenu.Show();
                }
                else
                {
                    MessageBox.Show("Username or Password is incorrect");
                    txtPwd.Text = "";
                    txtUserName.Text = "";
                    txtUserName.Focus();
                }
    
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                con.Close();
            }
           
        }

答案 1 :(得分:0)

这里的海报!原来,我一直收到该错误的原因是因为我的图像太大。对于可能最终阅读此内容的任何初学者程序员:如果遇到此错误,请查看图像详细信息。