第五课 用户登录

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第五课用户登录

•用户登录窗体

•多线程编程

一、用户登录窗体

1、窗体模式

Windows窗体模式分Modal 和Modeless 两种,中文分别称为“模式窗体”和“非模式窗体”。

两种窗体模式的区别在于:窗体打开之后是否立即返回到调用者。非模式窗体打开后会立即返回,而模式窗口则必须关闭之后才会返回。

ShowDialog()方法:将窗体以“模式窗体”打开

Show()方法:将窗体以“非模式窗体”打开

用户登录窗体应以“模式窗体”打开,便控制未登录用户的操作。

2、模式窗体的返回与返回值

当设置窗体的DialogResult 属性为除枚举值DialogResult.None 之外的值时,窗体关闭,并返回所设置的窗体DialogResult 属性值。

System.Windows.Forms命名空间

enum DialogResult

{

None,

OK,

Cancel,

Abort,

Retry,

Ignore

Yes,

No

}

3. 窗体DialogResult 属性设置

1)直接赋值

2)通过命令按钮自动赋值

当单击命令按钮或窗体上的关闭按钮时,系统将自动把按钮的DialogResult 属性值赋给窗体的DialogResult 属性。

4. 用户登录窗体按钮

“登录”:DialogResult.None,当登录成功时,通过程序直接窗体DialogResult 属性设置为DialogResult.OK 或其他非None值。

“取消”:DialogResult.Cancel

5. 窗体默认命令按钮

当窗体焦点不在按钮上时,按下回车键、Esc钮,窗体自动“单击”的按钮。

窗体的AcceptButton 属性:设置“回车”默认按钮

窗体的CancelButton 属性:设置“Esc”默认按钮

6. 显示登录窗体

在主窗体的Load 事件处理函数中添加如下代码

FormSignIn fsi = new FormSignIn();

if (fsi.ShowDialog() != DialogResult.OK)

{

Application.Exit();

this.Dispose();

}

7. 登录实现

1)生成登录信息包

2)将信息包发送到服务器

3)根据服务器返回的信息确定是否成功登录。或成功登录则记录成功登录信息,并设置窗体的DialogResult为DialogResult.OK,否则提示错误信息,重新登录,或设置窗体的DialogResult为DialogResult.Cancel,退出应用程序。

先使用Demo 的GSCommon.dll 程序集中定义的类和方法来实现。

Demo服务器返回信息:

1)成功登录:返回在线用户信息表(数据库中VwOnlineUsers 视图)

2)失败分两种情况:一种是已在别处登录,返回逻辑值true, 另一种情况是密码或口令错,返回逻辑值false

二、多线程编程

1. 进程与线程

进程(process):程序的计算机中运行的实例。

线程(thread):一个进程中完成不同子任务的实例。

一个Windows 应用程序进程通常包含多个线程,其中一个线程为主线程————启动线程,负责接受和处理用户输入信息、更新用户界

面等,其他线程根据需要由程序员在进程/线程中创建。多线程使得一个进程能并行地执行不同的子任务。

2. 线程的创建

System.Threading.Thread

构造函数

1) Thread(ThreadStart 委托实例);

2) Thread(ParameterizedThreadStart 委托实例);

ThreadStart、与ParameterizedThreadStart 的构造函数中都带一个参数,这个参数就是:线程要执行的方法名称(线程代码),而且都是void 类型的方法。ThreadStart委托执行方法不带参数,ParameterizedThreadStart委托执行方法带一个object参数,由启动线程时将参数传递给委托执行的方法。

3. 线程的启动

启动无参数委托线程:Start();

启动参数化委托线程:Start(object对象)

4. 前台线程与后台线程

前台线程:负责接受和处理用户输入信息的的线程,影响用户界面的更新

后台线程:不影响用户界面更新的其他处理线程,

通过IsBackground 属性设置。

5。登录中使用多线程

可以避免出出现程序“假死”现象。

当单击“登录”时创建一后台线程,线程代码为向服务器发送信息,然后等待线程结束(先用查询线程状态的方式等待线程结束),处理服务器返回的信息。

如有侵权请联系告知删除,感谢你们的配合!

相关文档
最新文档