You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#无数据库登录窗体如何添加多组用户名密码登录信息?

当然可以!还能优化你的代码让它更高效

你的代码其实已经实现了多组用户的登录支持,但有几个小细节可以优化,让它更高效、更易用:

现有代码的小问题

  • 每次点击登录按钮都会重新创建用户列表,有点浪费系统资源
  • 使用List<KeyValuePair>做登录校验时,是逐个遍历查找,用户数量多了之后校验速度会变慢

优化后的实现方案

首先把用户列表放到窗体类的成员变量里,并且改用Dictionary<string, string>(根据用户名快速查找密码,效率更高):

// 在你的窗体类里定义这个成员变量,只初始化一次
private readonly Dictionary<string, string> _validUsers = new Dictionary<string, string>()
{
    {"ime1", "lozinka123"},
    {"niko", "niko123"},
    // 直接在这里添加新用户就行,格式就是 {"用户名", "密码"}
    {"test_user", "test_pass"},
    {"admin", "admin_123"}
};

然后修改登录按钮的点击事件代码,增加输入校验和更高效的判断逻辑:

private void button1_Click(object sender, EventArgs e)
{
    // 先去除输入内容的前后空格,避免用户误输入空格导致登录失败
    string inputUsername = txtUsername.Text.Trim();
    string inputPassword = txtPassword.Text.Trim();

    // 先判断是否为空输入,提升用户体验
    if (string.IsNullOrWhiteSpace(inputUsername) || string.IsNullOrWhiteSpace(inputPassword))
    {
        MessageBox.Show("Molimo unesite korisničko ime i lozinku!");
        return;
    }

    // 用Dictionary的TryGetValue快速查找对应用户名的密码
    if (_validUsers.TryGetValue(inputUsername, out string storedPassword))
    {
        // 找到用户名后,再对比密码
        if (storedPassword == inputPassword)
        {
            ucitavanje uczu = new ucitavanje();
            uczu.Show();
            this.Hide();
        }
        else
        {
            MessageBox.Show("Vaše korisničko ime ili lozinka nisu točni! Pokušajte ponovno!");
        }
    }
    else
    {
        MessageBox.Show("Vaše korisničko ime ili lozinka nisu točni! Pokušajte ponovno!");
    }
}

这样做的好处

  • 效率更高:Dictionary的查找是O(1)时间复杂度,用户再多也能快速完成校验
  • 更省资源:用户列表只在窗体初始化时创建一次,不用每次点击按钮都重新生成
  • 扩展性好:要添加新用户,直接在_validUsers里加新的键值对就行,非常方便
  • 体验更好:增加了空输入判断,还处理了输入前后的空格,减少不必要的错误提示

如果以后你要连接数据库,只需要把从_validUsers获取密码的逻辑,换成从数据库查询用户密码的逻辑就可以了,过渡起来也很平滑。

内容的提问来源于stack exchange,提问作者trackgg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:38:07