最近,看到网上经常会问如何进行窗口跳转,大多数的问题都是牵扯到Login窗口。其实,在Visual Studio 6以来,比较正确的做法,是判断Login窗口的返回值,然后决定是否打开主窗体,那么在C#中也是一样的。

具体做法如下:

首先,创建Login窗口,然后添加相应的输入框和按钮,设置窗口的AcceptButton为窗体的确认按钮,而CancelButton为窗体的取消按钮。例如:

this.AcceptButton = this.btnOK;

this.CancelButton = this.btnCancel;

定义确定按钮以及取消按钮事件,如下:

private void btnOK_Click(object sender, System.EventArgs e)

{

// Here is to use fixed username and password

// You can check username and password from DB

if( txtUserName.Text == "Admin" && txtPassword.Text == "nopassword" )

{

// Save login user info

uiLogin.UserName = txtUserName.Text;

uiLogin.Password = txtPassword.Text;

// Set dialog result with OK

this.DialogResult = DialogResult.OK;

}

else

{

// Wrong username or password

nLoginCount++;

if( nLoginCount == MAX_LOGIN_COUNT )

// Over 3 times

this.DialogResult = DialogResult.Cancel;

else

{

MessageBox.Show( "Invalid user name and password!" );

txtUserName.Focus();

}

}

}

private void btnCancel_Click(object sender, System.EventArgs e)

{

// Set dialog result with Cancel

this.DialogResult = DialogResult.Cancel;

}

然后,在Login窗体的Closing事件中,要进行处理,如下:

private void frmLogin_Closing(object sender, System.ComponentModel.CancelEventArgs e)

{

// Check whether form is closed with dialog result

if( this.DialogResult != DialogResult.Cancel &&

this.DialogResult != DialogResult.OK )

e.Cancel = true;

}

除此外,Login窗体一些辅助代码如下:

private int nLoginCount = 0;

private const int MAX_LOGIN_COUNT = 3;

private UserInfo uiLogin;

public frmLogin( ref UserInfo ui )

{

//

// Required for Windows Form Designer support

//

InitializeComponent();

// Set login info to class member

uiLogin = ui;

}

调用的时候,要修改程序的Main函数,如下:

/// <summary>

/// The main entry point for the application.

/// </summary>

[STAThread]

static void Main()

{

UserInfo ui = new UserInfo();

frmLogin myLogin = new frmLogin( ref ui );

if( myLogin.ShowDialog() == DialogResult.OK )

{

//Open your main form here

MessageBox.Show( "Logged in successfully!" );

}

else

{

MessageBox.Show( "Failed to logged in!" );

}

}

而附加的UserInfo类如下:

/// <summary>

/// User info class

/// </summary>

public class UserInfo

{

private string strUserName;

private string strPassword;

public string UserName

{

get{ return strUserName;}

set{ strUserName = value;   }

}

public string Password

{

get{ return strPassword;}

set{ strPassword = value;}

}

public UserInfo()

{

strUserName = "";

strPassword = "";

}

}

C#Winform中的一个登录解说(转载的哟,比较不错)的更多相关文章

  1. 20150216—winform中的DataGridView

    DataGridView的主要作用是用来按列表来显示信息,其信息的数据源可以是SQL数据库,也可以是一个列表式的集合. DataGridView的位置:工具箱--数据--DataGridView.如下 ...

  2. C# MVC 用户登录状态判断 【C#】list 去重(转载) js 日期格式转换(转载) C#日期转换(转载) Nullable<System.DateTime>日期格式转换 (转载) Asp.Net MVC中Action跳转(转载)

    C# MVC 用户登录状态判断   来源:https://www.cnblogs.com/cherryzhou/p/4978342.html 在Filters文件夹下添加一个类Authenticati ...

  3. easyui datagrid 禁止选中行 EF的增删改查(转载) C# 获取用户IP地址(转载) MVC EF 执行SQL语句(转载) 在EF中执行SQL语句(转载) EF中使用SQL语句或存储过程 .net MVC使用Session验证用户登录 PowerDesigner 参照完整性约束(转载)

    easyui datagrid 禁止选中行   没有找到可以直接禁止的属性,但是找到两个间接禁止的方式. 方式一: //onClickRow: function (rowIndex, rowData) ...

  4. 转载:WinForm中播放声音的三种方法

    转载:WinForm中播放声音的三种方法 金刚 winForm 播放声音 本文是转载的文章.原文出处:http://blog.csdn.net/jijunwu/article/details/4753 ...

  5. 转:C4项目中验证用户登录一个特性就搞定

    转:C4项目中验证用户登录一个特性就搞定   在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性.     // 摘要:    //     表示一个特性,该特性用于限制调用 ...

  6. WinForm中一个窗体调用另一个窗体

    [转] WinForm中一个窗体调用另一个窗体的控件和事件的方法(附带源码) //如果想打开一个 Form2 的窗体类,只需要: Form2 form = new Form2(); //有没有参数得看 ...

  7. winform设计一个登录界面和修改密码的界面-自动切换窗体(问题[已解] 望一起讨论)(技术改变世界-cnblog)

    http://www.cnblogs.com/IAmBetter/archive/2012/01/14/2322156.html winform设计一个登录界面和修改密码的界面-自动切换窗体(问题[已 ...

  8. eclipse 中main()函数中的String[] args如何使用?通过String[] args验证账号密码的登录类?静态的主方法怎样才能调用非static的方法——通过生成对象?在类中制作一个方法——能够修改对象的属性值?

    eclipse 中main()函数中的String[] args如何使用? 右击你的项目,选择run as中选择 run configuration,选择arguments总的program argu ...

  9. Winform中Treeview控件失去焦点,将选择的节点设置为高亮显示 (2012-07-16 13:47:07)转载▼

    Winform中Treeview控件失去焦点,将选择的节点设置为高亮显示 (2012-07-16 13:47:07)转载▼标签: winform treeview drawnode Treeview控 ...

随机推荐

  1. spring框架内置笔记本

    ◆基本介绍 目的:解决企业应用开发的复杂性 特征:使用主JavaBean更换EJB,它提供了许多其他的企业应用 范围:随你Java应用 Spring 框架是一个分层架构.由 7 个定义良好的模块组成. ...

  2. Entity Framework Code First学习系列

    Entity Framework Code First学习系列目录 Entity Framework Code First学习系列说明:开发环境为Visual Studio 2010 + Entity ...

  3. java保存获取Web内容的文件

    package com.mkyong;   import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.F ...

  4. Instruments-Automation: 通过命令行执行测试用例

    为了实现该脚本的自己主动定时执行.我们需要开始在命令行和脚本,详细代码如下所示的: instruments -t /Applications/Xcode.app/Contents/Applicatio ...

  5. C#关于HttpClient的应用(二):极光推送IM集成

    public class JPushClient:BaseHttpClient { private String appKey; private String masterSecret; public ...

  6. HDU 1042 N! 參考代码

    HDU 1042 N! 题意:给定整数N(0 ≤ N ≤ 10000), 求 N! (题目链接) #include <iostream> using namespace std; //每一 ...

  7. Android MediaPlayer 和 NativePlayer 播放格式控制

    对于本机MediaPlayer 支持格型式试验: 对于原生 NativeMedia 的支持格式測试: 这个支持就比較失望了,眼下測试的手机仅仅支持 H.264视频及AAC音频,其他的格式都不支持. 使 ...

  8. Petroglyph访问:中间件游戏

    Xsolla有幸与Petroglyph的总裁及创始人Michael Legg进行了对话. 这是及时战略游戏中对主要一家公司. 由前Westwood的员工 创办,还设计了一块新的RTS游戏-Grey G ...

  9. java中IO写文件工具类

    以下是一些依据经常使用java类进行组装的对文件进行操作的类,平时,我更喜欢使用Jodd.io中提供的一些对文件的操作类,里面的方法写的简单易懂. 当中jodd中提供的JavaUtil类中提供的方法足 ...

  10. 只显示年月的js时间控件 纯手写

    <style> #date { text-align: center; } .td { cursor: pointer; } </style> <script> f ...