我有一个登录表单,该表单会指向主菜单表单。但是,当我单击“登录”按钮时,出现“参数无效”错误。之前从未出现过,直到昨晚才开始。这是我的Login和MainMenu表单及其代码。
登录:
代码:
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();
}
}
主菜单:
代码:
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();
}
}
顺便说一句,图片在图片框中。所有帮助表示赞赏。即使您只解释“参数无效”的确切含义。
答案 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)
这里的海报!原来,我一直收到该错误的原因是因为我的图像太大。对于可能最终阅读此内容的任何初学者程序员:如果遇到此错误,请查看图像详细信息。