记得好久以前要用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事件,以下:this
private void OKButton_Click(object sender, EventArgs e)
{
PassWord = textBoxPassword.Text;
UserName = textBoxID.Text; 设计
}orm
还要在LoginForm.Designer.cs的InitializeComponent方法中添加二者的属性,分别为:事件
this.OKButton.DialogResult = System.Windows.Forms.DialogResult.OK;string
this.Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;it
这样LoginForm就完事了,怎么样,这样的话LoginForm够简洁吧。。。。。io
第二步:设计主窗口,这才是咱们工做的重心,怎么作看具体状况,这里就不讨论了,这里只说下和上面登陆窗口相关联的部分,咱们只须要在MainForm的MainForm_Load方法中写下以下代码便可:form
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属性。
总之,感受这才是真正的登陆类窗口设计的正统方法,我才掌握,真是太羞愧了。