1. 登陆逻辑

  • FrmMain 为主窗体(启动窗体)
  • FrmLogin 为登陆窗体

在“主窗体”中使用ShowDialog()方法显示“登陆窗体”,并通过“登陆窗体”的DialogResult告知“主窗体”是否登陆成功。

1.1 主窗体:

private void FrmMain_Load(object sender, EventArgs e)
{
FrmLogin frm = new FrmLogin();
if (frm.ShowDialog() == DialogResult.OK)
{
// 执行主窗体的一些初始化内容
}
else
{
this.Close(); // 关闭主窗体
}
}

1.2 登陆窗体:

private vode btn_Login_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
}

2. 窗体间的数据传递

“登陆窗体”在执行完毕后,需要将登陆用的信息传递给“主窗体”,其传递的过程就是“暂时”将用户信息存在“主窗体”可以获取的“地方”,根据“地方”不同可以有一下几种方案。

新建 User.cs

public class User {
public string username;
public User(string username)
{
this.username = username;
}
}

2.1 将数据暂存在“登陆窗体”的Tag属性上

2.1.1 登陆窗体:

private vode btn_Login_Click(object sender, EventArgs e)
{
this.Tag = new User('rianman');
this.DialogResult = DialogResult.OK;
}

2.1.2 主窗体:

private void FrmMain_Load(object sender, EventArgs e)
{
FrmLogin frm = new FrmLogin();
if (frm.ShowDialog() == DialogResult.OK)
{
User user = frm.Tag as User; // 此处获取“登陆窗体”传递过来的数据
}
else
{
this.Close(); // 关闭主窗体
}
}

2.2 将数据暂存在“主窗体”的Tag属性上

2.2.1 登陆窗体:

private vode btn_Login_Click(object sender, EventArgs e)
{
FrmMain main this.Owner as FrmMain;
main.Tag = new User("rainman");
this.DialogResult = DialogResult.OK;
}

2.2.2 主窗体:

private void FrmMain_Load(object sender, EventArgs e)
{
FrmLogin frm = new FrmLogin();
if (frm.ShowDialog() == DialogResult.OK)
{
User user = this.Tag as User; // 此处获取“登陆窗体”传递过来的数据
}
else
{
this.Close(); // 关闭主窗体
}
}

2.3 将数据暂存在类的“静态成员”上

2.3.1 新建Context.cs

public class Context
{
public static User LoginUser = null;
}

2.3.2 登陆窗体:

private vode btn_Login_Click(object sender, EventArgs e)
{
Context.LoginUser = user;
this.DialogResult = DialogResult.OK;
}

2.3.3 主窗体:

private void FrmMain_Load(object sender, EventArgs e)
{
FrmLogin frm = new FrmLogin();
if (frm.ShowDialog() == DialogResult.OK)
{
User user = Context.LoginUser; // 此处获取“登陆窗体”传递过来的数据
}
else
{
this.Close(); // 关闭主窗体
}
}

2.4 将数据暂存在“主窗体”的特定属性上

2.4.1 登陆窗体:

private vode btn_Login_Click(object sender, EventArgs e)
{
FrmMain main = this.Owner as FrmMain;
main.LoginUser = new User("rainman");
this.DialogResult = DialogResult.OK;
}

2.4.2 主窗体:

public user LoginUser { get; set; }

private void FrmMain_Load(object sender, EventArgs e)
{
FrmLogin frm = new FrmLogin();
if (frm.ShowDialog() == DialogResult.OK)
{
User user = this.LoginUser; // 此处获取“登陆窗体”传递过来的数据
}
else
{
this.Close(); // 关闭主窗体
}
}

最新文章

  1. Sprint计划
  2. lucene中FSDirectory、RAMDirectory的用法
  3. Android Studio使用教程-菜单(Edit)
  4. canvas API ,通俗的canvas基础知识(二)
  5. LINQ之路 3:C# 3.0的语言功能(下)
  6. PAT (Basic Level) Practise:1040. 有几个PAT
  7. Fresco好案例
  8. 编译QFileSystemModel
  9. unity的一些tips
  10. MySQL(一)MySQL基础介绍
  11. 【代码审计】XYHCMS V3.5任意文件读取漏洞分析
  12. final、finally、finalize的用法
  13. 关于SharedPreferences存储数据的使用方法
  14. hdu4403A very hard Aoshu problem 线段树
  15. CentOS 6.5 搭建cuda环境
  16. ECG心电图数据1
  17. iOS 扩展类方法之category!
  18. mongodb节点配置指南
  19. 获取token
  20. ItermCF的MR并行实现

热门文章

  1. Oracle数据块损坏篇之10231内部事件
  2. Apple的LZF算法解析
  3. 【UWP开发】一个简单的Toast实现
  4. C#遍历文件夹下所有文件
  5. C#中实现excel文件批量导入access数据表中
  6. 4、python列表
  7. servlet/filter/listener/interceptor区别与联系
  8. Dependency management
  9. Git分布式版本控制学习
  10. angularJs