问:windows form下的用户登录程序如何写

主  题:  问:windows form下的用户登录程序如何写?
作  者:  zhangweibing (冰)
等  级:  ^
信 誉 值:  97
所属论坛:  .NET技术 C#
问题点数:  100
回复次数:  10
发表时间:  2003-9-12 10:03:47

程序用C#和WindowsForm方式开发.主窗口名称为Form1.cs
在程序设定

string username = "abc";
string password = "123";

要求进入程序前,先弹出一个login窗口,
窗口上有用户名输入文本框和密码输入文本框和确认按钮.
输入用户名和密码后,确认按钮事件中是否为上述变量值"abc"和"123",
如果正确,进入程序主窗口Form1.cs.
如果不正确,关闭窗口返回到Windows.
程序如何写?
能否提供思路,或实例.



回复人: sqhua(拉长弓兮射天狼) ( 五级(中级)) 信誉:93 2003-9-12 10:12:27 得分:5

private void button1_Click(object sender, System.EventArgs e)
{
    string sql = "select pass from pass";
    string pass = DA.查询单值(sql).ToString();
    if(textBox1.Text.Trim() != pass)
    {
        MessageBox.Show("密码不正确,不能登录");
        textBox1.Text = "";
        textBox1.Focus();
        return;
    }
    else
    {
        this.Visible = false;
        f_main f = new f_main();
        f.ShowDialog();
        Close();
    }
}

回复人: wjhs(杰借) ( 一级(初级)) 信誉:100 2003-9-12 10:12:53 得分:5

数据库加C#,通过提取数据判断是不是已经注册为用户就行啦.

回复人: sqhua(拉长弓兮射天狼) ( 五级(中级)) 信誉:93 2003-9-12 10:14:28 得分:0

private void button1_Click(object sender, System.EventArgs e)
{
    string sql = "select pass from pass";
    string pass = DA.查询单值(sql).ToString();
    if(textBox1.Text.Trim() != pass)
    {
        MessageBox.Show("密码不正确,不能登录");
        textBox1.Text = "";
        textBox1.Focus();
        return ;
    }
    else
    {
        this.Visible = false ;
        f_main f = new f_main();
        f.ShowDialog();
        Close();
    }
}

回复人: sqhua(拉长弓兮射天狼) ( 五级(中级)) 信誉:93 2003-9-12 10:16:21 得分:0

以上代码实现最简单的登录控制,只有用密码,不用用户名

回复人: angxain(張憲) ( 三级(初级)) 信誉:100 2003-9-12 10:17:49 得分:5

首先在數據庫建表
id Name LoginName PassWord

在登入的時候進行判斷,查詢數據庫中是否有該輸入的用戶,或者直接用ComboBox將用戶綁定下來,請看代碼:

SqlCommand cmd = new SqlCommand("SELECT * FROM User", cn);
DataTable dt = new DataTable();
SqlDataAdapter da = New SqlDataAdapter(cmd);
da.Fill(dt);
comboBox1.DataSource = dt;
comboBox1.ValueMember = "PassWord";
comboBox1.DisplayMember = "LoginUser";
//在確認下面寫代碼
if(txtPassword.Text==comboBox1.SelectedValue.ToString())
{
    //登入系統
}
else
{
    MessageBox.Show("密碼不正確");
    //我沒有在工程里面寫,所以代碼可能有細節錯誤。
}

回复人: snof(雪狼) ( 两星(中级)) 信誉:105 2003-9-12 10:30:06 得分:60

把它定义为public static

string username = "abc";
string password = "123";

然后在主程序的LOAD事件里写如下:

Login f = new Login();
DialogResult res = f.ShowDialog();
if (res != DialogResult.OK)
{
    this.Close();
    this.Dispose(true);
    Application.Exit();
    return;
}
string username = f.textBoxWorkID.Text;
string password = f.textBoxPassword.Text;
try
{
    //判断用户名和密码是否正确
    if (错误的话)
    {
        MessageBox.Show("用户名或密码错!");
        this.Close();
        this.Dispose(true);
        Application.Exit();
        return;
    }
}
catch (Exception)
{
}

在你输入密码的窗口里记得把两个TextBox设为public型的,这样才可以调用

回复人: zhongwanli(想一下,就会可以) ( 三级(初级)) 信誉:100 2003-9-12 10:33:45 得分:5

当然,必须有一个设置数据库连接的窗口

C#+SqlServer 就可以解决!

具体办法,请自己查看MSDN 中,有例子

当前我给个网址你吧!

http://www.chinabs.net/csharp/default.asp?infoid=185

这是一个数据库访问的例子

回复人: zhangweibing(冰) ( 一级(初级)) 信誉:97 2003-9-12 10:35:30 得分:0

button1放在什么地方.
是在Form1.cs上吗,
return;语句又返回到那里去了.
如果login窗口是单独先执行的,如何跳转到Form1.cs主窗口去.
我的Form1.cs主窗口是数据输入界面.

数据库查询很好解决,我给出string username的目的是注重实现该功能的具体方法.
注册窗口是否是在一个单独的login.cs中实现,还是就在Form1.cs中通过弹出对话框的方法实现.
两个Form之间的数据如何传递.
对话框Dialog(指login界面)与Form之间如何实现数据传递.
以上是我的问题的关键.

回复人: zhongwanli(想一下,就会可以) ( 三级(初级)) 信誉:100 2003-9-12 10:35:31 得分:0

当然,必须有一个设置数据库连接的窗口

C#+SqlServer 就可以解决!

具体办法,请自己查看MSDN 中,有例子

当前我给个网址你吧!

http://www.chinabs.net/csharp/default.asp?infoid=185

这是一个数据库访问的例子

回复人: zhpsam109(阿波) ( 二级(初级)) 信誉:100 2003-9-12 10:41:53 得分:5

string sql="select * from 登陆表";
SqlCommand cmd=new SqlCommand(sql,conn);                  // 创建SqlCommand对象,注意参数
SqlDataReader sqlda=cmd.ExecuteReader();                  //创建SqlDataReader对象
if(textBox1.Text=="")
{
    MessageBox.Show("请输入用户名!","系统提示",MessageBoxButtons.OK);
    textBox1.Focus();
}
else if(textBox2.Text=="")
{
    MessageBox.Show("请输入密码!","系统提示",MessageBoxButtons.OK);
    textBox2.Focus();
}
else if(textBox1.Text=="admin" && textBox2.Text=="admin")
{
    pForm.username="系统管理员";
    pForm.dt=DateTime.Now;
    this.Close();
}
else
{
    while(sqlda.Read())                                                       //检查用户名和密码是否正确
    {
        if(sqlda.GetString(1).Trim()==textBox1.Text.Trim() && sqlda.GetString(2).Trim()==textBox2.Text.Trim())
        {
            pForm.username=textBox1.Text;                                    //获取当前用户
            pForm.dt=DateTime.Now;                                           //获取登陆时间
            this.Close();                                                    //密码正确则关闭登陆窗口
        }
        else
        {
            MessageBox.Show("用户名和密码不正确,请重新输入!","系统提示",MessageBoxButtons.OK);
            textBox1.Text="";
            textBox2.Text="";
            textBox1.Focus();
        }
    }  //end while
}
sqlda.Close();                            //注意,必须关闭SqlDataReader对象

回复人: skykevin(天下) ( 二级(初级)) 信誉:100 2003-9-12 10:43:47 得分:15

主窗口:

private void Form1_Load(object sender, System.EventArgs e)
{
    dlgLogon curForm=new dlgLogon();
        switch (curForm.ShowDialog())
        {
            case DialogResult.OK:
            case DialogResult.Cancel:
                this.Close();
                break;
        }
}

登录窗口:
验证密码:对,则返回DialogResult.OK,错,则返回DialogResult.Cancel.

回复人: zhangweibing(冰) ( 一级(初级)) 信誉:97 2003-9-12 11:41:03 得分:0

snof(雪狼) 的回答正是我所需要的。
回答好极了。
问题已经解决,程序已经调通。
谢谢snof(雪狼) 。


该问题已经结贴 ,得分记录: sqhua (5)、 wjhs (5)、 angxain (5)、 snof (60)、 zhongwanli (5)、 zhpsam109 (5)、 skykevin (15)、

Contributors: FHL