下面是Winform学生信息管理系统登陆窗体设计的完整攻略。
一、设计思路
设计一个Winform学生信息管理系统登陆窗体需要以下几步:
- 新建一个Winform项目,添加登陆窗体。
- 设计登陆窗体的布局,包括添加组件,设置组件属性等。
- 为登陆窗体的组件添加事件处理程序,比如点击按钮触发登陆操作。
- 在事件处理程序中,编写验证登陆信息的代码,并执行相应的操作。
二、实现步骤
1. 新建一个Winform项目,添加登陆窗体
打开Visual Studio,选择“文件”-“新建”-“项目”,选择Visual C#-Windows经典桌面-Winform应用程序。然后在解决方案资源管理器中,右键单击“应用程序”,选择“添加”-“新建项”,在“添加新项”对话框中选择“Windows 窗体”,命名为“LoginForm.cs”。
2. 设计登陆窗体的布局
在设计器中,将LoginForm.cs中的窗体大小设置为300*200。然后在窗体中添加两个Label、两个TextBox和两个Button控件。
其中第一个Label用于显示“用户名”,将其Text属性设置为“用户名”;第二个Label用于显示“密码”,将其Text属性设置为“密码”。
对于两个TextBox,一个用于输入用户名,一个用于输入密码。将其Multiline属性都设置为false,并分别设置为PasswordChar='*',以保证输入的密码被隐藏。
最后添加了两个Button控件,一个用于执行登陆操作,将其Text属性设置为“登录”;另一个用于取消登陆操作,将其Text属性设置为“取消”。
3. 为登陆窗体的控件添加事件处理程序
在设计器中,选中“登录”按钮,进入事件的属性面板,在Click事件下拉菜单中选择“事件处理程序”-“新建”,将窗体中的代码和事件处理联系起来。
在新建的事件处理程序“LoginForm_Load”方法中,添加以下代码:
txtName.Focus(); //将光标设置在用户名输入框上
在“登录”按钮的“Click”事件处理程序中,添加以下代码:
private void btnLogin_Click(object sender, EventArgs e)
{
//获取用户输入的用户名和密码
string username = txtName.Text.Trim();
string password = txtPwd.Text.Trim();
//验证用户名和密码是否为空
if (string.IsNullOrEmpty(username))
{
MessageBox.Show("请填写用户名!");
txtName.Focus();
return;
}
if (string.IsNullOrEmpty(password))
{
MessageBox.Show("请填写密码!");
txtPwd.Focus();
return;
}
//模拟账号验证
if (username.Equals("admin") && password.Equals("123456"))
{
MessageBox.Show("登录成功!");
this.DialogResult = DialogResult.OK;
this.Close();
}
else
{
MessageBox.Show("用户名或密码错误,请重试!");
txtPwd.Clear();
txtPwd.Focus();
}
}
这里使用了一个模拟账号验证的方法,在实际应用中需要根据实际情况进行修改。
4. 执行登陆操作
最后,在主窗体中,可以使用以下代码来调用Login窗体实现登陆操作:
private void btnLogin_Click(object sender, EventArgs e)
{
LoginForm loginForm = new LoginForm();
if (loginForm.ShowDialog() == DialogResult.OK)
{
//按照实际情况进行跳转或其他操作
MessageBox.Show("欢迎进入学生信息管理系统!");
}
}
这样,在单击主窗体上的“登录”按钮时,就会弹出登陆窗体,用户输入正确的用户名和密码后,返回一个“OK”的结果给主窗体,以便在登陆成功后进行相应的操作。
三、示例说明
以下是两条Winform学生信息管理系统登陆窗体设计的示例说明:
1. 示例一
在Winform登录窗口中添加“记住密码”和“自动登录”选项,勾选后显示不同的状态信息,实现以下逻辑:
- “记住密码”被勾选时,下次进入登录窗口,密码栏自动填上上次登录的密码,用户名不变。
- “自动登录”被勾选时,下次直接进入主窗口,不需要再次输入用户名和密码。
private void chkSavePwd_CheckedChanged(object sender, EventArgs e)
{
if (chkSavePwd.Checked)
{
chkAutoLogin.Enabled = true;
}
else
{
chkAutoLogin.Enabled = false;
chkAutoLogin.Checked = false;
}
}
private void chkAutoLogin_CheckedChanged(object sender, EventArgs e)
{
if (chkAutoLogin.Checked)
{
chkSavePwd.Checked = true;
MessageBox.Show("自动登录已开启");
}
else
{
MessageBox.Show("自动登录已关闭");
}
}
private void LoadLoginInfo()
{
if (File.Exists("login.txt"))
{
using (StreamReader sr = new StreamReader("login.txt"))
{
txtName.Text = sr.ReadLine();
txtPwd.Text = sr.ReadLine();
chkSavePwd.Checked = Convert.ToBoolean(sr.ReadLine());
if (chkSavePwd.Checked)
{
chkAutoLogin.Enabled = true;
chkAutoLogin.Checked = Convert.ToBoolean(sr.ReadLine());
}
}
}
}
private void SaveLoginInfo()
{
using (StreamWriter sw = new StreamWriter("login.txt"))
{
sw.WriteLine(txtName.Text.Trim());
sw.WriteLine(txtPwd.Text.Trim());
sw.WriteLine(chkSavePwd.Checked);
if (chkSavePwd.Checked)
{
sw.WriteLine(chkAutoLogin.Checked);
}
}
}
private void LoginForm_Load(object sender, EventArgs e)
{
LoadLoginInfo();
}
private void LoginForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (chkSavePwd.Checked)
{
SaveLoginInfo();
}
}
private void btnLogin_Click(object sender, EventArgs e)
{
//获取用户输入的用户名和密码
string username = txtName.Text.Trim();
string password = txtPwd.Text.Trim();
//验证用户名和密码是否为空
if (string.IsNullOrEmpty(username))
{
MessageBox.Show("请填写用户名!");
txtName.Focus();
return;
}
if (string.IsNullOrEmpty(password))
{
MessageBox.Show("请填写密码!");
txtPwd.Focus();
return;
}
//模拟账号验证
if (username.Equals("admin") && password.Equals("123456"))
{
MessageBox.Show("欢迎进入学生信息管理系统!");
if (chkAutoLogin.Checked)
{
this.DialogResult = DialogResult.OK;
}
else
{
this.DialogResult = DialogResult.Yes;
}
this.Close();
}
else
{
MessageBox.Show("用户名或密码错误,请重试!");
txtPwd.Clear();
txtPwd.Focus();
}
}
2. 示例二
在Winform登录窗口中实现验证码功能,实现以下逻辑:
- 启动窗口时,产生一个四位数字验证码,以及对应的验证码图片,显示出来。
- 输入用户名和密码后,如果验证码错误,提示验证码错误。若验证码正确,执行登陆操作。
private string code;
private void LoginForm_Load(object sender, EventArgs e)
{
GenerateCode();
}
private void GenerateCode()
{
Random random = new Random();
code = string.Empty;
for (int i = 0; i < 4; i++)
{
code += random.Next(10).ToString();
}
Bitmap bmp = new Bitmap(panel1.Width, panel1.Height);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.White);
for (int i = 0; i < code.Length; i++)
{
Font font = new Font("微软雅黑", 26, (FontStyle.Bold | FontStyle.Italic));
Brush brush = new SolidBrush(Color.FromArgb(
random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)));
g.DrawString(code[i].ToString(), font, brush, i * 50 + 10, 5);
}
for (int i = 0; i < 50; i++)
{
Brush brush = new SolidBrush(Color.FromArgb(
random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)));
bmp.SetPixel(random.Next(0, bmp.Width), random.Next(0, bmp.Height), brush.Color);
}
panel1.BackgroundImage = bmp;
}
private void btnRefresh_Click(object sender, EventArgs e)
{
GenerateCode();
}
private void btnLogin_Click(object sender, EventArgs e)
{
//获取用户输入的用户名、密码和验证码
string username = txtName.Text.Trim();
string password = txtPwd.Text.Trim();
string usercode = txtCode.Text.Trim();
//验证用户名和密码是否为空
if (string.IsNullOrEmpty(username))
{
MessageBox.Show("请填写用户名!");
txtName.Focus();
return;
}
if (string.IsNullOrEmpty(password))
{
MessageBox.Show("请填写密码!");
txtPwd.Focus();
return;
}
if (string.IsNullOrEmpty(usercode))
{
MessageBox.Show("请填写验证码!");
txtCode.Focus();
return;
}
//验证验证码
if (usercode.Equals(code))
{
//模拟账号验证
if (username.Equals("admin") && password.Equals("123456"))
{
MessageBox.Show("欢迎进入学生信息管理系统!");
this.DialogResult = DialogResult.OK;
this.Close();
}
else
{
MessageBox.Show("用户名或密码错误,请重试!");
txtPwd.Clear();
txtPwd.Focus();
}
}
else
{
MessageBox.Show("验证码错误,请重新输入!");
txtCode.Clear();
txtCode.Focus();
GenerateCode();
}
}
以上就是Winform学生信息管理系统登陆窗体设计的完整攻略,包括设计思路、实现步骤和示例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Winform学生信息管理系统登陆窗体设计(1) - Python技术站