Winform登录对很多程序猿来说都有些困惑,登录进入主窗体后要销毁登录窗体,而不是隐藏哦,怎么实现呢?

先贴一段Program.cs的代码

 static void Main()
{
Mutex mutex = new Mutex(false, "ThisShouldOnlyRunOnce");
//判断互斥体是否使用中。上下这两行代码判断程序只运行一次
bool Running = !mutex.WaitOne(, false);
if (!Running)
{
try
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
            //登录窗体
LoginForm lf=new LoginForm();
lf.ShowDialog();
if (lf.DialogResult == DialogResult.OK)//这一行很重要,如果登录成功,登录窗体要返回一个结果DialogResult.OK,这样就可以运行到主窗体MainForm了哦。
{
Application.Run(new MainForm(LoginForm.LoginUser));
}
}
catch (Exception e)
{
ErrorForm ef = new ErrorForm();
ef.Text = "错误";
ef.lblTitle.Text = "程序提示";
ef.lblMsg.Text = "抱歉,程序突然终止" + e.Message;
ef.ShowDialog();
Application.Exit();
}
}
else
{ ErrorForm ef = new ErrorForm();
ef.Text = "提示";
ef.lblTitle.Text = "运行提示";
ef.lblMsg.Text = "程序已经运行,请勿重复运行。";
ef.ShowDialog();
Application.Exit();
}
}

再贴一段登录窗体的代码

       //登录按钮事件
private void btnLogin_Click(object sender, EventArgs e)
{
LonginFunction(); //登录方法
}
//密码框输入完后直接回撤登录,要写密码框的KeyDown事件哦
private void textBoxPwd_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)//回车键
{
LonginFunction();//登录方法
}
}
private void LonginFunction()
{
string username = textBoxSysMember.Text.Trim();
string Pwd = textBoxPwd.Text.Trim();
ErrorForm ef = new ErrorForm();
if (string.IsNullOrEmpty(username))
{
ef.lblTitle.Text = "登录错误:";
ef.lblMsg.Text = "必须填写用户名";
ef.ShowDialog();
}
else
{ if (string.IsNullOrEmpty(Pwd))
{
ef.lblTitle.Text = "登录错误:";
ef.lblMsg.Text = "必须填写密码";
ef.ShowDialog();
}
else
{
// 当然这里可以写成到数据库查询的,偶这里是写死了哦
if (username == "admin")
{
if (Pwd == "")
{ this.DialogResult = DialogResult.OK;//这个地方就是登录成功后要返回的值哦
this.Close();
}
else
{
ef.lblTitle.Text = "登录错误:";
ef.lblMsg.Text = "用户密码错误";
ef.ShowDialog();
}
}
else
{
                            ef.lblTitle.Text = "登录错误:";
ef.lblMsg.Text = "用户密码错误";
ef.ShowDialog();
                     } 
}
}
}

这些代码里都出现了一个错误框ErrorForm ,是我自己定义的一个错误提示对话框哦,猿们可以自己定义一个,偶把自己的贴出来

这个里面有图标、标题lblTitle和错误信息lblMsg,都是Lable,给赋值就可以了哦。

Winform登录、控制软件只运行一次、回车登录的更多相关文章

  1. Pytest系列(30)- 使用 pytest-xdist 分布式插件,如何保证 scope=session 的 fixture 在多进程运行情况下仍然能只运行一次

    如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 背景 使用 pytest-xdis ...

  2. Linux守护进程实现程序只运行一次

    1.守护进程 守护进程(Daemon)是一种运行在后台的特殊进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件. 2.让程序只运行一次 如果让程序只运行一次,有很多方法,此处的一种 ...

  3. WinForm应用只运行一次

    一.WinForm应用只能运行一次 static class Program { /// <summary> /// 应用程序的主入口点. /// </summary> [ST ...

  4. 2019-11-22-Roslyn-在多开发框架让-msbuild-的-Target-仅运行一次

    title author date CreateTime categories Roslyn 在多开发框架让 msbuild 的 Target 仅运行一次 lindexi 2019-11-22 09: ...

  5. c# winform实现同时只允许账号在一台电脑登录的功能

    公司有个小需求,要求账号不能同时登录在多台电脑上,就像那个微信或QQ一样,如果一台电脑登录了,原来登录的就自动退出了(网上搜索点单点登录,发现有些出入,人家是实现一次登录在多个系统间认证的) 找了些资 ...

  6. 【web 回车】web项目 注册或登录页面 回车登录无效,解决方案

    解决方案: /** * 登陆按钮的点击事件 */ $("#loginID").click(function(){ var username = $("#u"). ...

  7. 小技巧--让JS代码只执行一次

    有时候实在是没办法,就像我这个比赛系统中,有一个弹出框,这个弹出框之外都是模糊的(这是在ajax写出弹出框时,加了一个水印). 然而遇到的问题,也是蹊跷古怪,因为这个弹出框的事件是数据查询事件,但是因 ...

  8. js登录,回车登录

    $(document).ready(function(){ $("#loginBtn").click(doLoginEvent); loadCookies(); //回车登录 do ...

  9. SSH无密码登录:只需两个简单步骤 (Linux)

    最后更新 2017年4月8日 分类 最新文章 服务器安全 标签 RSA SSH Key 非对称加密 如果你管理一台Linux服务器,那么你就会知道每次SSH登录时或者使用scp复制文件时都要输入密码是 ...

随机推荐

  1. java程序内存使用

    一.内存使用示意图 二.java运行时数据区域 1.程序计数器: 当前线程所执行字节码的行号提示器. 2.java虚拟机栈: 线程私有,与线程生命周期相同,保存基本数据类型,如果线程所请求的栈深度大于 ...

  2. android 定时执行一个任务

    1. timer = new Timer(true) TimerTask task =  new TimerTask(){ public void run(){ test(); } } timer.s ...

  3. 网站引导页插件intro.js 的用法

    intro.js是一个用于制作网页引导效果的js插件,用法很简单,intro.js.v2.0.rar 1.在需要的页面添加引用 intro.js introjs.css 这两个文件已经足够,但是文件夹 ...

  4. 326.Power of Three

    /* Given an integer, write a function to determine if it is a power of three. Follow up: Could you d ...

  5. sqlite支持的数据库类型

    http://www.sqlite.org/datatype3.html 默认只支持:NULL,INTEGER,REAL,TEXT,BLOB

  6. What is Split Brain in Oracle Clusterware and Real Application Cluster (文档 ID 1425586.1)

    In this Document   Purpose   Scope   Details   1. Clusterware layer   2. Real Application Cluster (d ...

  7. C# 位域[flags] 转

    C# 位域[flags] .NET中的枚举我们一般有两种用法,一是表示唯一的元素序列,例如一周里的各天:还有就是用来表示多种复合的状态.这个时候一般需要为枚举加上[Flags]特性标记为位域,例如: ...

  8. Redis多机功能之复制

    复制的目的:创建具有相同数据库的拷贝服务器:扩展系统处理读请求的能力: 复制的定义 Redis的复制(replication)功能允许用户根据一个Redis服务器来创建任意多个该服务器的复制品,其中被 ...

  9. POJ1979 Red and Black (简单DFS)

    POJ1979 Description There is a rectangular room, covered with square tiles. Each tile is colored eit ...

  10. EasyUI datagrid组件绑定有转义字符的json数据出错

    最近项目中一个页面的datagrid出现了莫名其妙的问题, 首先是分页数据的第二页和第三页不能展示,过了一天后第一页也出不来了, 默认首页不出来导致后续分页处理无法进行, 整个数据都不出来了,最后只能 ...