实际使用

Program.cs代码

//声明一个线程
private static System.Threading.Mutex mutex;
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//开启线程
mutex = new System.Threading.Mutex(true, "OnlyRun");
if(mutex.WaitOne(0, false))
{
FormLogin fl = new FormLogin();
fl.ShowDialog();
if(fl.DialogResult == DialogResult.OK)
{
Application.Run(new FormMain());
}
else
{
return;
}
}
else
{
MessageBox.Show("程序已经在运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
Application.Exit();
}
}

登录窗体(FormLogin)代码

if(textBox1.Text == "123")
{ //验证用户名密码成功
this.DialogResult = DialogResult.OK; //返回一个登录成功的对话框状态
this.Close(); //关闭登录窗口
}

优劣

优:1、可以防止重复运行该程序。

改进:1、根据需要是否关闭Login窗体。

其他方法一

使用Close关闭登录窗体,使用Application.Run()方法打开主窗体

Program.cs代码

FormLogin fl = new FormLogin();
fl.ShowDialog();
if(fl.DialogResult == DialogResult.OK)
{
Application.Run(new FormMain());
}
else
{
return;
}

登录窗体(FormLogin)代码

private void button1_Click(object sender, EventArgs e)
{
if(textBox1.Text == "aaa")
{ //验证用户名密码成功
this.DialogResult = DialogResult.OK; //返回一个登录成功的对话框状态
this.Close(); //关闭登录窗口
}
}

优劣

优:1、将登录窗体关闭,只打开主窗体。

劣:1、如果需要切换用户,还需要重新运行窗体,无法使用FormLogin.Show();方法。

其他方法二

使用Hide()方法隐藏登录窗体,使用实例化的方法打开主窗体。

优劣

winform关闭登录窗体打开主窗体的方法的更多相关文章

  1. winform程序登陆后关闭登录窗体

    用winform做程序的时候,我们一般都是在Program先启动登录窗体,然后登录成功后才创建主窗体,结果这就导致了登录窗体无法关闭 所以如果我们不在Program的程序入口先创建登录窗体的话就能完美 ...

  2. 浅析c#中登录窗体和欢迎窗体关闭的问题

    第一次在cnbogs发文章,这次来个很基础的,主要给小白看. 在c#的winform编程中,我们经常会做登录窗体或欢迎窗体,并把他们作为启动窗体. 但是,我们有可能会遇到一些问题. 请看下面的代码: ...

  3. winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体

    winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体,搜集了几个方法,列举如下: 一 . 所有权法 父窗体,名称为“fuForm”,在父窗体中有个公共刷新方法,也就是窗体数据初始 ...

  4. C# 关闭登录窗体,显示主窗体

    首先在programm.cs里设置登录窗体显示 static class Program    {        /// <summary>        /// The main ent ...

  5. Caliburn.Micro 关闭父窗体打开子窗体

    比如我们在做登录的时候需要关闭父窗体打开子窗体.使用Caliburn.Micro它的时候我们关闭登录窗口的时候主页面也会关闭. 解决方法就是在登录页面的CS里面写 IndexView iv = new ...

  6. winform里操作打开在panel里的form窗体,子窗体操作同级子窗体或者父窗体的方法

    最近开始了一个winform项目,原先一直都是web项目.遇到个问题,就是在框架内,左侧和中间的main都是用panel来实现的form,就是把form窗体打开到panel里,实现左侧是导航,中间是操 ...

  7. C# WinForm 单例模式(例:同一个窗体只创建一次实例)

    //C# WinForm 单例模式(例:同一个窗体只创建一次实例) //打开窗体的事件: Form3 f = Form3.InstanceObject() ; //实例化窗体 f.Focus(); / ...

  8. Winform子窗体刷新父窗体

    调用窗体(父):Form1,被调用窗体(子):Form2方法1:   所有权法//Form1://需要有一个公共的刷新方法public   void   Refresh_Method(){//...} ...

  9. 【转】WinForm窗体显示和窗体间传值

    以前对WinForm窗体显示和窗体间传值了解不是很清楚 最近做了一些WinForm项目,把用到的相关知识整理如下 A.WinForm中窗体显示 显示窗体可以有以下2种方法: Form.ShowDial ...

随机推荐

  1. Codeforces Round #656 (Div. 3) 题解

    A. Three Pairwise Maximums #构造 题目链接 题意 给定三个正整数\(x,y,z\),要求找出正整数\(a,b,c\),满足\(x=max(a,b), y=max(a,c), ...

  2. sqli-labs-master less05 及 Burp Suite暴力破解示例

    一.首先测试显示内容 例:http://localhost/sqli-labs-master/Less-5/?id=1 http://localhost/sqli-labs-master/Less-5 ...

  3. 下载centos镜像的地址

  4. 去除openwrite.cn博客验证码限制

    相信有的小伙伴肯定遇到过如下这种情况,但是作为老白嫖党肯定是 「下次一定」 了,所以今天我们来看看如何不关注公众号实现 「阅读原文」. 如何解决呢? 1.通过 F12 打开控制台,切换至 Elemen ...

  5. PyQt(Python+Qt)学习随笔:QDateEdit日期编辑部件和QTimeEdit时间编辑部件

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 Designer输入部件中,Date Edit和T ...

  6. PyQt(Python+Qt)学习随笔:QColumnView的resizeGripsVisible属性

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QColumnView在一个视图中展示多个列表,每个下级列表是上一个列表的数据项的分支, QColu ...

  7. PyQt(Python+Qt)学习随笔

    老猿Python博文目录 老猿Python博客地址 PyQt学习随笔 PyQt(Python+Qt)帮助文档官网及文档下载 PyQt(Python+Qt)学习随笔:PyQt帮助文档导入assistan ...

  8. Oracle函数:trunc、round、ceil和floor

    1.trunc函数 1).trunc(date) 格式:trunc(date,fmt) trunc用于截取时间,即便你指定不同的格式类型,返回的类型始终都是时间类型. 示例: with dates a ...

  9. kubernetes 中的证书工作机制

    一文带你彻底厘清 Kubernetes 中的证书工作机制 搬砖者: 张首富 时 间: 2020-05-26 w x: y18163201 原文地址:https://zhaohuabing.com/po ...

  10. 性能测试平台nGrinder

    ngrinder简介 ngrinder是NAVER(韩国大型互联网公司)开源的性能测试工具平台,直接部署成web服务,平台化,支持多用户使用,可扩展性好,可自定义plugin插件 开源地址:http: ...