C#窗体实现登录界面
程序员文章站
2022-05-06 13:27:30
...
C#窗体实现登录界面
- 用户名和密码放在Json文件中
- 使用的控件有TextBox,Button,Label,PictureBox
C#窗体实现登录界面
Json文件介绍
首先,我们要知道json文件和xml文件一样都是文本文件。
1.json的语法格式
数据存放在键值对中
数据由逗号分隔
花括号保存对象
方括号保存数组
json的键用放在""中
json的值类型
数字
字符串(字符串放在双引号中)
逻辑值(true or false)
数组(用方括号括起来,也可以用list替换)
对象(在花括号中)
null
C#操作json文件时通过键来取值或赋值(有点类似于字典)
test.json
{
"user":
[
{
"name":"admin",
"password":"123456"
}
]
}
整个test.json就是一个对象,对象里存放了user属性,它的值是一个数组,这个数组里存放了一个对象,对象又有两个属性name和password,两个属性的值都是字符串类型,这两个属性之间用逗号隔开。
窗体布局总览
程序代码
Form1.cs
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.IO;
using System.Windows.Forms;
namespace Login
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void LOGIN_Click(object sender, EventArgs e)
{
LogIn();
}
private void password_KeyUp(object sender, KeyEventArgs e)
{
if (password.Text == "")
return;
switch(e.KeyCode)
{
case Keys.Enter:
{
LOGIN.Focus();
LogIn();
break;
}
default:
break;
}
}
private void username_KeyUp(object sender, KeyEventArgs e)
{
if (username.Text == "")
return;
switch(e.KeyCode)
{
case Keys.Enter:
{
password.Focus();
break;
}
default:
break;
}
}
private void LogIn()
{
string path = Path.Combine(Environment.CurrentDirectory, "test.json");
using (StreamReader sr = new StreamReader(path))
{
using (JsonTextReader jtr = new JsonTextReader(sr))
{
JObject test = JObject.Load(jtr);
JArray users = (JArray)test["user"];
foreach(var user in users)
{
User u = JsonConvert.DeserializeObject<User>(user.ToString());
if (u.Name == username.Text)
{
if (u.Password == password.Text)
{
//MessageBox
DialogResult = DialogResult.OK;
MessageBox.Show("登录成功!");
Close();
return;
}
else
{
MessageBox.Show("密码错误");
password.Text = "";
password.Focus();
return;
}
}
else
{
MessageBox.Show("用户不存在!");
username.Text = "";
password.Text = "";
username.Focus();
}
}
}
}
}
private void Cancel_click(object sender, EventArgs e)
{
Close();
}
}
}
User.cs
namespace Login
{
internal class User
{
public string Name { get; set; }
public string Password { get; set; }
}
}