实际使用

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. JQuery案例:左右选

    左右选 <head> <meta charset="UTF-8"> <title></title> <style> se ...

  2. C++基础知识篇:C++ 变量作用域

    作用域是程序的一个区域,一般来说有三个地方可以定义变量: 在函数或一个代码块内部声明的变量,称为局部变量. 在函数参数的定义中声明的变量,称为形式参数. 在所有函数外部声明的变量,称为全局变量. 我们 ...

  3. Pytest学习(十二)-生成HTML报告插件之pytest-html的使用

    环境前提 Python3.6+ 安装插件 pip3 install pytest-html -i http://pypi.douban.com/simple/ --trusted-host pypi. ...

  4. H3CNE认证(题库)

    H3CNE考试的题库,均为发烧友收集的,拥有将近认证考试的百分之八十五的题,但答案不具备官方性,但是题库具有解析. https://huxiaoyao.lanzous.com/b01tr2skd 密码 ...

  5. Spring mvc与springboot

    org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration: viewResolver 类路径文件 把类路径下 ...

  6. modelviewset与apiview

    modelviewset(认证,权限,限流,序列化,分页,过滤,排序) 1.DRF初始化 1.认证(让用户登录) 2.权限(根据不同用户角色,可以操作不同的表) 3.限流(限制接口访问速度) 4.序列 ...

  7. 16.java设计模式之迭代器模式

    基本需求: 展示一个学校的结构,比如一个学校下面有多个学院,学院下面有多个系,对其节点主要是遍历,与组合模式略有不同 传统方案: 学校<-学院<-系 依次继承 这种方式,在一个页面中展示出 ...

  8. 团队 Gitee 实战训练

    这个课程属于 https://edu.cnblogs.com/campus/fzzcxy/2018SE2 这个作业要求在哪里 https://edu.cnblogs.com/campus/fzzcxy ...

  9. AndroidStudio中获得的VersionCode一直为1和VersionName一直为1.0

    因为AndroidStudio把versionCode和versionName的维护放到了build.gradle中.

  10. PyQt(Python+Qt)学习随笔:QListWidget删除项的takeItem方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 takeItem方法从QListWidget列表部件的项中删除指定项,并返回对应项对象.调用语法如下 ...