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. Dubbo 服务暴露注册流程

    Dubbo的应用会在启动时完成服务注册或订阅(不论是生产者,还是消费者)如下图所示. 图中小方块Protocol, Cluster, Proxy, Service, Container, Regist ...

  2. HDU 1043 八数码 Eight A*算法

    Eight Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  3. VC让对话框显示就最大化

    方法一:在OnInitDialog()函数中 ShowWindow(SW_SHOWMAXIMIZED); 初始化的时候 方法二: 当然,你可以获取屏幕大小,然后设置窗口位置/大小 //ShowWind ...

  4. IBM Appscan基本操作手册

    一.操作前提 1.首先下载Appscan的安装包 2.安装Appscan 二.操作流程 1.双击图标,打开Appscan软件 2.打开软件后,页面显示如下: 3.选择“文件-新建”,弹出如下的窗口: ...

  5. C# 版dll 程序集合并工具

    C# 版dll 程序集合并工具 最近要开发一个控件给同事用,开发中会引用一些第三方DLL,这样交给用户很不方便,希望的效果是直接交付一个DLL文件.网上找了一些资料. 1.       使用 Cost ...

  6. Software: MPEG-7 Feature Extraction Library

    Software MPEG-7 Feature Extraction Library : This library is adapted from MPEG-7 XM Reference Softwa ...

  7. javascript设计模式-工厂模式

    简单工厂模式:使用一个类来生成实例. 复杂工厂模式:使用子类来决定一个成员变量应该是哪个具体的类的实例. 简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口.通过工 ...

  8. CSS阻止页面双击选中文本

    转载自:w3cui 在双击左右箭头,快速切换图片滚动时,会选择附近区域的文字,感觉不是很好,今天在同事在分享时,讲到了这个问题, 试了一下,不错,解决了问题IE及Chrome下的方法一样,对相应的元素 ...

  9. C# 发送邮件方法

    发送邮件所用的核心知识点 微软封装好的MailMessage类:主要处理发送邮件的内容(如:收发人地址.标题.主体.图片等等) 微软封装好的SmtpClient类:主要处理用smtp方式发送此邮件的配 ...

  10. Oracle笔记 十一、PL/SQL函数和触发器

    --创建函数 create or replace function add_sal(sSal number) return number is begin if (sSal > 5000) th ...