C# 登录窗口的设计技巧

记得很久之前要用C#做个需要登录的小东西,自己之前完全没有编写WinForm的经验,整个过程中,自己感觉应该怎么写就怎么写,时常导致许多逻辑性的错误,比如在做这个登录窗口的时候,应该实现的效果是,用户启动程序,首先显示登录窗口,由用户输入用户名和密码等登录信息,然后如果点击登录按钮则验证用户名和密码的正确性,如正确则调出程序主窗口,如果点击取消按钮则关闭程序,自己第一次的时候首先设计了个登录窗口LoginForm,两个按钮CancelButton和OKButton,然后分别添加各自的Click事件,OKButton的Click事件中验证用户信息的正确性,并返回验证结果,如果正确就new一个主窗口MainForm,这个时候程序的主函数Main中要这样写:Application.run(new LoginForm());这样最后导致的结果就是感觉所有的事情都要LoginForm去做,导致它过于臃肿,本来我们的重心应该在MainForm中的;下面的做法就很好的避免了这个逻辑错误;

第一步:设计一个登录窗口LoginForm,内含两个按钮CancelButton和OKButton,还有具体的内容输入框,如textBoxID和textBoxPassword,另设相对应的类成员用来接受输入框中的内容,如UserName和PassWord,只需要添加OKButton的Click事件,如下:

 private void OKButton_Click(object sender, EventArgs e)
        {
            PassWord = textBoxPassword.Text;
            UserName = textBoxID.Text;      

        }

还要在LoginForm.Designer.cs的InitializeComponent方法中添加两者的属性,分别为:

this.OKButton.DialogResult = System.Windows.Forms.DialogResult.OK;

this.Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;

这样LoginForm就完事了,怎么样,这样的话LoginForm够简洁吧。。。。。

第二步:设计主窗口,这才是我们工作的重心,怎么做看具体情况,这里就不讨论了,这里只说下和上面登录窗口相关联的部分,我们只需要在MainForm的MainForm_Load方法中写下如下代码即可:

private void MainForm_Load(object sender, EventArgs e)
        {
            LoginForm formLogin = new LoginForm();
            if(formLogin.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
            {
                string userName = formLogin.UserName;
                string password = formLogin.PassWord;
                formLogin.Dispose();
            }
            else
            {
                formLogin.Dispose();
                this.Dispose();
            }
           
        }

就这样就基本可以了,注意这里是用到了模式化窗口的方法ShowDilog,参数this表示MainForm是LoginForm的父窗口,这里就用到ShowDilog的返回值,就是上面设置的两个按钮的DialogResult属性。

总之,感觉这才是真正的登录类窗口设计的正统方法,我才掌握,真是太羞愧了。

posted on 2017-11-19 01:57  癫狂编程  阅读(4807)  评论(0编辑  收藏  举报

导航

好的代码像粥一样,都是用时间熬出来的