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. php 循环向<select>添加选项

    在控制器内:$this->assign('data',$data);

  2. 安装jdk java -version 不是自己所需要的版本

    原服务器安装有1.4的jdk,应用需要安装1.6的jdk.安装完毕后在/etc/profile里配置1.6jdk的环境变量后使用命令java -version显示还是原来的1.4的版本. 解决办法: ...

  3. SQL 获取各表记录数的最快方法

    select distinct o.name,i.rows from sysobjects o,sysindexes  i where o.id=i.id and o.Xtype= 'U' and i ...

  4. hdu-Danganronpa(AC自动机)

    Problem Description Danganronpa is a video game franchise created and developed by Spike Chunsoft, t ...

  5. JavaScript对象的创建之外部属性定义方式(基于已有对象扩充其属性和方法)

    var person = new Object(); person.name = "luogk"; person.age = 33; person.say = function() ...

  6. MFC编译程序,缺少MFC动态链接库的解决

    MFC编译程序,缺少MFC动态链接库的解决 问题:VS2010 c++编写的程序在别人的机子运行不了,缺少mfc100u.dll xxx100d.dll等的解决方法 解决方法: 1.将这些dll打包, ...

  7. 如何让 Drupal 使用 Wordpress 形式的编辑代码?

    如果你曾有过将 Wordpress 网站迁移到 Drupal 的经验,很可能客户会问的第一件事就是如何为 Drupal 添加编辑代码. Wordpress 中的 Shortcodes 插件让使用者可以 ...

  8. bootstrap风格的multiselect插件——类似邮箱收件人样式

    在开发颗粒云邮箱的过程中,遇到了一个前端的问题,就是邮箱收件人的那个multiselect的input输入框.不仅能够多选,还要能够支持ajax搜索,把联系人搜索出来.就是类似下面的这个东西: 网上找 ...

  9. 浅谈如何使用代码为MP3文件写入ID3Tags

    作者:郑童宇 GitHub:https://github.com/CrazyZty 1.前言 做了三年左右的Android开发,一直没写过博客,最近正好打算换工作,算是闲一些,就将以前开发所遇到的一些 ...

  10. The str method

    __str__ is a special method name, like __init__, that is supposed to return a string representation ...