在网上搜了一下,发现一个不错的例子,自己又重新做了一下,个人感觉还不错。
这是第一个窗体,也就是主窗体
private void Form1_Load(object sender, EventArgs e)
{
//创建登录窗口
Form_login frm = new Form_login();
//显示登录窗口
frm.ShowDialog();
//防止非法关闭
while (!frm.returnright())
{
if (frm.returnright() == true)
frm.Close();
else
frm.ShowDialog();
}
//如果条件为真,表示在登录窗口按了退出,同时关闭此窗口
if (frm.returncancel() == true)
this.Close();
if (frm.returnusetype() == 1)
{
//这里添加只允许普通用户的操作
}
}
下面是第二个窗体,Name=“Form_login”
分别是cboxtype,cboxuser,cboxpassword;
在这其中用了好几个bool变量,保证这个登录窗口不会通过除取消外的方法关闭
public partial class Form_login : Form
{
private int usetype;
private bool right=false;
private bool cancel = false;
/// <summary>
/// 退出按钮按下时为真
/// </summary>
public bool returncancel()
{
return this.cancel;
}
/// <summary>
/// 检查用户类型
/// </summary>
/// <returns>返回用户类型,管理员为0,普通用户为1</returns>
public int returnusetype()
{
if (this.cboxtype.Text == "管理员")
this.usetype = 0;
else
this.usetype = 1;
return this.usetype;
}
/// <summary>
/// 保证用户名和密码正确,不正确时保持此窗口要求重新输入,直到正确或退出为止
/// </summary>
public bool returnright()
{
return this.right;
}
/// <summary>
/// 登录窗口
/// </summary>
public Form_login()
{
InitializeComponent();
}
/// <summary>
/// 确认按钮
/// </summary>
private void loginbtnOK_Click(object sender, EventArgs e)
{
//一些登录数据库,验证过程
string strsql = "select * from userright where UserName='" +cboxuser.Text.Replace("'", "''")
+ "' and PassWord= '" + txtpassword.Text.Replace("'", "''") +"'and Type='"+cboxtype.Text+"'";
SqlConnection con = new SqlConnection(sqlaceess.connectionString);
SqlCommand com = new SqlCommand(strsql, con);
con.Open();
SqlDataReader sdr = com.ExecuteReader();
if (sdr.Read())
{
MessageBox.Show("登录成功");
this.right = true;
this.Close();
}
else
{
//MessageBox.Show("Invalid User");
lbtips.Text = "提示:输入错误,请重新输入";
}
sdr.Dispose();
con.Close();
}
/// <summary>
/// 退出按钮
/// </summary>
private void loginbtncl_Click(object sender, EventArgs e)
{
this.right = true;
this.cancel = true;
Close();
}
}