Winform登录、控制软件只运行一次、回车登录
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登录、控制软件只运行一次、回车登录的更多相关文章
- Pytest系列(30)- 使用 pytest-xdist 分布式插件,如何保证 scope=session 的 fixture 在多进程运行情况下仍然能只运行一次
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 背景 使用 pytest-xdis ...
- Linux守护进程实现程序只运行一次
1.守护进程 守护进程(Daemon)是一种运行在后台的特殊进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件. 2.让程序只运行一次 如果让程序只运行一次,有很多方法,此处的一种 ...
- WinForm应用只运行一次
一.WinForm应用只能运行一次 static class Program { /// <summary> /// 应用程序的主入口点. /// </summary> [ST ...
- 2019-11-22-Roslyn-在多开发框架让-msbuild-的-Target-仅运行一次
title author date CreateTime categories Roslyn 在多开发框架让 msbuild 的 Target 仅运行一次 lindexi 2019-11-22 09: ...
- c# winform实现同时只允许账号在一台电脑登录的功能
公司有个小需求,要求账号不能同时登录在多台电脑上,就像那个微信或QQ一样,如果一台电脑登录了,原来登录的就自动退出了(网上搜索点单点登录,发现有些出入,人家是实现一次登录在多个系统间认证的) 找了些资 ...
- 【web 回车】web项目 注册或登录页面 回车登录无效,解决方案
解决方案: /** * 登陆按钮的点击事件 */ $("#loginID").click(function(){ var username = $("#u"). ...
- 小技巧--让JS代码只执行一次
有时候实在是没办法,就像我这个比赛系统中,有一个弹出框,这个弹出框之外都是模糊的(这是在ajax写出弹出框时,加了一个水印). 然而遇到的问题,也是蹊跷古怪,因为这个弹出框的事件是数据查询事件,但是因 ...
- js登录,回车登录
$(document).ready(function(){ $("#loginBtn").click(doLoginEvent); loadCookies(); //回车登录 do ...
- SSH无密码登录:只需两个简单步骤 (Linux)
最后更新 2017年4月8日 分类 最新文章 服务器安全 标签 RSA SSH Key 非对称加密 如果你管理一台Linux服务器,那么你就会知道每次SSH登录时或者使用scp复制文件时都要输入密码是 ...
随机推荐
- IIS6.0中布署MVC站点(转)
昨晚我写的API上线,API是vs2010 + MVC4开发的,需要布署到windows 2003 server + IIS6.0的环境中,之前一直是布在IIS7.0,比较熟悉, 换到IIS6.0,添 ...
- Microsoft visual studio中文字样输出
解决办法: 可以尝试下通过: 1.file->高级保存选项-> 2.工具->选项->文本编辑器->自动检测不带签名的UTF-8编码
- [Java] java中的接口定义
在Java的通常规范中,对数据成员的修改要通过接口提供的方法进行(如下面示例中接口中的void learnMath(int hours)和void learnEnglish(int hours)),这 ...
- java异常分类(运行时异常,可检查异常)
NullPointerException:是运行时异常(RuntimeException),也叫非检查异常 所以我们抛出该类异常实例时,方法声明处无需添加throws来列举该类异常的抛出,编译器在编译 ...
- 内存数据库(sqlite)和 map数据结构 做缓存对比
背景: 今天看文档时发现说android的SQLITE在创建时,如果不指定name,则会创建in-memory的数据库.且当该db被close时,才会释放. 那这样来说,完全可以用来做内存缓存嘛. 用 ...
- maven与git
================================================== maven的作用 ======================================== ...
- junit模板方法模式应用
模板方法模式 定义: 定义一个操作中的算法骨架,而将一些步骤延伸到子类中去,使得子类可以不改变一个算法的结构,即可重新定义该算法的某些特定步骤.这里需要复用的是算法的结构,也就是步骤,而步骤的实现可以 ...
- 链表:删除链表中重复的结点(java实现)
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...
- 使用 Sahi 实现 Web 自动化测试
Sahi 是 Tyto Software 旗下的一个基于业务的开源 Web 应用自动化测试工具.Sahi 运行为一个代理服务器,并通过注入 JavaScript 来访问 Web 页面中的元素.Sahi ...
- json 和 pickel 详解
一.json json,用于字符串 和 python数据类型间进行转换 Json模块提供了四个功能:dumps.dump.loads.load 1.json.loads()用于将字符串形式的字典,列表 ...