winform简单验证
winform简单验证:
----------------公共类:------------------------
public class BaseForm : Form { public string CurrentUser { set; get; } }
主界面MainFrm.cs:
public partial class MainFrm : BaseForm { public MainFrm() { InitializeComponent(); //tsl_CurrentUser.Text = CurrentUser ?? string.Empty; } private void MainFrm_Load(object sender, EventArgs e) { if (string.IsNullOrEmpty(CurrentUser)) { this.Hide(); LoginFrm lf = new LoginFrm(); DialogResult dr = lf.ShowDialog(); if (dr == DialogResult.OK) { this.Show(); this.CurrentUser = lf.username; tsl_CurrentUser.Text = CurrentUser; } } } }
LoginFrm.cs:
public partial class LoginFrm : Form { public LoginFrm() { InitializeComponent(); } public string username { get; set; } private void btn_ok_Click(object sender, EventArgs e) { username = txtname.Text.Trim(); string password = txtpass.Text.Trim(); if (username == "admin" && password == "admin888") { this.DialogResult = DialogResult.OK; this.username = "admin"; } else { MessageBox.Show("账号密码错误,请重新登录!"); } } }
TreeView....
================
public MainFrm() { InitializeComponent(); //tsl_CurrentUser.Text = CurrentUser ?? string.Empty; } private void MainFrm_Load(object sender, EventArgs e) { if (string.IsNullOrEmpty(CurrentUser)) { this.Hide(); LoginFrm lf = new LoginFrm(); DialogResult dr = lf.ShowDialog(); if (dr == DialogResult.OK) { this.Show(); this.CurrentUser = lf.username; tsl_CurrentUser.Text = CurrentUser; } } // this.treeView1.Nodes.Add(new TreeNode() { Text="", }); string connstr = ConfigurationManager.AppSettings["connstr"]; SqlConnection conn = new SqlConnection(connstr); conn.Open(); if (conn.State == ConnectionState.Open) { string sql = "select * from T_menu"; SqlDataAdapter sda = new SqlDataAdapter(sql, conn); //DataTable dt = new DataTable(); sda.Fill(dt); foreach (DataRow dr in dt.Select("Pid=0")) { TreeNode tn = new TreeNode("菜单管理"); tn.Text = dr["id"].ToString() + "." + dr["BigName"].ToString(); tn.Expand(); AppendChild(tn, dr["id"].ToString()); this.treeView1.Nodes.Add(tn); } } } DataTable dt = new DataTable(); // 递归绑定数据 private void AppendChild(TreeNode tnParent, string pid) { string filter = string.Format("Pid={0}", pid); DataRow[] drs = dt.Select(filter); foreach (DataRow dr in drs) { TreeNode tn = new TreeNode(); tn.Text = dr["id"].ToString() + "--" + dr["BigName"].ToString(); AppendChild(tn, dr["id"].ToString()); tnParent.Nodes.Add(tn); } }
测试数据:
1 系统管理 0
2 基础数据 0
3 仓库管理 0
4 调度管理 0
5 资产管理 0
6 订单更改 0
7 车间生产 0
8 任务令管理 0
9 质量控制 0
10 标签打印 0
11 成品逆向打印 0
12 发货管理 0
13 报表管理 0
14 试制任务管理 0
15 通用查询 0
16 系统信息维护 1
17 角色信息维护 1
18 个人信息维护 1
19 密码管理 1
20 组别管理 1
21 系统参数管理 1
22 系统文件管理 1
23 数据字典 2
24 仓库管理 2
25 区域管理 2
26 货位管理 2
27 物料管理 2
28 客户数据管理 2
29 任务令下载 8
30 排产 8
31 FQC 8
32 任务令条码打印 8
33 任务令查询 8
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?