WinForm 设计 C# 了解的请来一下 关于登陆界面.
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WinForm 设计 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属性。
总之,感觉这才是真正的登录类窗口设计的正统方法,我才掌握,真是太羞愧了。
参考这个写的,登陆连接数据库的逻辑判断应该写在那部分呀?
我问这样子的代码,登陆验证的判断应该写在那里. 以上长篇摘自网络.
this.DialogResult = DialogResult.OK;
this.Close();
正确的方法应该是这样的,更改Program.cs ,将原本的主窗体初始化显示代码改成这样
frmLogin login = new frmLogin();
login.ShowDialog();
if (login.DialogResult.Equals(DialogResult.OK)) //登陆成功才显示主窗口
Application.Run(new MainForm());
在这种方法中,验证同样是通过frmLogin来进行的,当然你可以把验证的过程放在一个公用类中,比如是DataHelper.CheckUser(usr, pwd)
用的时候在frmLogin中检测的时候可能就直接是
if(DataHelper.CheckUser(usr, pwd)) //验证通过
this.DialogResult = DialogResult.OK;
this.Close();
追问
站内信您了,希望能帮帮忙~3Q
参考技术A 另外写一个验证的方法,然后在登陆按钮的确定按钮里面调用。 参考技术B 写了这么多?不过还是亲自运行你的工程才好讲。可以百度hi我,这里说多麻烦啊。 参考技术C 上网随便搜一下C#的连库代码 。你连库想干什么,就写道什么的前边 参考技术D 没看明白的请支持!@C# WinForm PropertyGrid用法
关于C# PropertyGrid的用法没有找到,找到一个C++的用法。
模仿着使用了一下,感觉挺不错,分享一下。
基本用法:
拖个PropertyGrid,绑定一个属性类就行了。
大气象 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace PropertyGridApp { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { propertyGrid1.SelectedObject = new Go(); } class Go { private string _Hi = "hi"; public string Hi { get { return _Hi; } set { _Hi = Hi; } } } } }
它能自动识别Go类中的属性,并且自动关联。
对属性进行分类并加注释:
大气象 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->class Go { private float _TieMu = 5.5f; private string _Rule = "数子法"; [CategoryAttribute("规则"), DescriptionAttribute("贴目")] public float TieMu { get { return _TieMu; } set { _TieMu = TieMu; } } [CategoryAttribute("规则"), DescriptionAttribute("计算法")] public string Rule { get { return _Rule; } set { _Rule = Rule; } } private int _Black = 0; private int _White = 0; [CategoryAttribute("围棋"), DescriptionAttribute("黑")] public int Black { get { return _Black; } set { _Black = Black; } } [CategoryAttribute("围棋"), DescriptionAttribute("白")] public int White { get { return _White; } set { _White = White; } } }
使用Color类型可以显示颜色选择下拉框,使用Image类型可以显示图片选择对话框,真强大。
大气象 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->private Color _BoardColor = Color.Yellow; [CategoryAttribute("围棋"), DescriptionAttribute("棋盘颜色")] public Color BoardColor { get { return _BoardColor; } set { _BoardColor = BoardColor; } } private Image _Background; [CategoryAttribute("围棋"), DescriptionAttribute("棋盘背景")] public Image Background { get { return _Background; } set { _Background = Background; } }
另外是自定义类型,比如枚举.
源码:http://files.cnblogs.com/greatverve/PropertyGridApp.rar
参考:
http://blog.csdn.net/xoyojank/archive/2009/07/04/4322167.aspx
以上是关于WinForm 设计 C# 了解的请来一下 关于登陆界面.的主要内容,如果未能解决你的问题,请参考以下文章