经常看到有人讨论程序运行唯一性或者窗体运行的唯一性问题。我之前也写了一些文章,在此把它进行整理汇总。

如果是程序的唯一性问题,我之前的一篇文章已经写得很全面,可以参看。

C# Winform如何使自己的程序只运行一次

如果是MDI子窗体的话,那么我最近的一篇文章提到的两种方法都不错,可以参看。

C# Winform如何在MDI中使子窗体只保留一个实例

如果不是MDI子窗体的话,而是一般窗体的话,其实要做到唯一打开的话,其实也是很简单的,需要在窗体中去做一些简单代码即可了。

如下就用一个名叫“frmUniqueForm”窗体类来说明。

首先,需要在此窗体类中,加一个静态窗体类对象,如下:

// Save the current form object
private static frmUniqueForm pUniqueForm = null;

然后在窗体类的构造函数中,去初始化静态对象,如:

pUniqueForm = this;

在窗体类的Closed事件中,去释放当前静态对象,代码如下:

private void frmUniqueForm_Closed(object sender, System.EventArgs e)

{

pUniqueForm = null;

}

最后,要在此窗体类中创建一个静态函数,来打开唯一窗体,具体如下:

public static void ShowUniqueWindow()

{

// Init static form object

if( pUniqueForm == null )

{

// Create new form

new frmUniqueForm();

// Show the form

pUniqueForm.Show();

}

// Set window focus and topmost attributes

pUniqueForm.Focus();

pUniqueForm.TopMost = true;

}

那么在其他地方去打开此窗口就非常简单了,只需调用这个静态函数即可,如下:

frmUniqueForm.ShowUniqueWindow();

C# Winform程序以及窗体运行的唯一性汇总的更多相关文章

  1. 解决C# WINFORM程序只允许运行一个实例的几种方法详解

    要实现程序的互斥,通常有下面几种方式,下面用 C# 语言来实现: 方法一: 使用线程互斥变量. 通过定义互斥变量来判断是否已运行实例. 把program.cs文件里的Main()函数改为如下代码: u ...

  2. Winform程序只允许运行一个程序实例

    /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static void Main() { Application ...

  3. 测试winform程序到树莓派运行

    啥也不说了,都在下图中了.winform可以在树莓派上跑了

  4. WinForm程序关闭窗体后杀死进程

    调用this.Close();后监听Browser_FormClosed加作处理 this.FormClosed += new System.Windows.Forms.FormClosedEvent ...

  5. winform 程序隐藏窗口运行

    DWPublishForm frm = new DWPublishForm(); frm.IsAutoUpdate = true; frm.ShowInTaskbar = false; frm.For ...

  6. C# winform程序免安装.net framework在XP/win7/win10环境运行!

    前文: 首先感谢群里的大神宇内流云 提供的anyexec for windows版本. 经过本人搭建虚拟机在xp环境 使用anyexec运行winfrom程序后,测试通过,如下是用的xp运行winfr ...

  7. C# winform程序免安装.net framework在XP/win7/win10环境运行!(转)

    C# winform程序免安装.net framework在XP/win7/win10环境运行!   前文: 首先感谢群里的大神宇内流云 提供的anyexec for windows版本. 经过本人搭 ...

  8. C# WinForm 程序免安装 .NET Framework(XP/win7/win10环境运行)

    前文 首先感谢群里的大神宇内流云 提供的anyexec for windows版本. 经过本人搭建虚拟机在xp环境 使用anyexec运行winfrom程序后,测试通过,如下是用的xp运行winfro ...

  9. DevExpress Winform使用单例运行程序方法和非DevExpress使用Mutex实现程序单实例运行且运行则激活窗体的方法

    原文:DevExpress Winform使用单例运行程序方法和非DevExpress使用Mutex实现程序单实例运行且运行则激活窗体的方法 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA ...

随机推荐

  1. 2018跳槽面试必备之深入理解 Java 多线程核心知识

    导语:多线程相对于其他 Java 知识点来讲,有一定的学习门槛,并且了解起来比较费劲.在平时工作中如若使用不当会出现数据错乱.执行效率低(还不如单线程去运行)或者死锁程序挂掉等等问题,所以掌握了解多线 ...

  2. Asterisk1.8 sip编码协商分析

    在开始分析之前,先对编码协商中可能涉及的asterisk数据结构和变量作些说明.ast_channel:定义一个通用的通道数据结构 struct ast_channel { const struct ...

  3. VC++实现程序重启的方法(转载)

    转载:http://blog.csdn.net/clever101/article/details/9327597 很多时候系统有很多配置项,修改了配置项之后能有一个按钮实现系统重启.所谓重启就是杀死 ...

  4. linux下递归列出目录下的所有文件名(不包括目录)

    1.linux下递归列出目录下的所有文件名(不包括目录) ls -lR |grep -v ^d|awk '{print $9}'2.linux下递归列出目录下的所有文件名(不包括目录),并且去掉空行 ...

  5. 【附9】elasticsearch-curator + Linux定时任务

    官网教程入口:https://www.elastic.co/guide/en/elasticsearch/client/curator/current/index.html 一.下载安装 下载:sud ...

  6. 第九章 对称加密算法--IDEA

    注意:本节内容主要参考自<Java加密与解密的艺术(第2版)>第7章“初等加密算法--对称加密算法” 9.1.IDEA 特点: 先于AES出来取代DES 安全性极高 常用于电子邮件加密算法 ...

  7. ACM-ICPC 2018 南京赛区网络预赛 E AC Challenge 状压DP

    题目链接: https://nanti.jisuanke.com/t/30994 Dlsj is competing in a contest with n (0 < n \le 20)n(0& ...

  8. AlexNet网络结构特点总结

    参考论文:ImageNet Classification with Deep Convolutional Neural Networks 1.特点 1.1 ReLU Nonlinearity的提出 Re ...

  9. 配置文件(Machine.config、Web.config、App.config)

    Machine.config1.该文件在Windows目录下\Microsoft.net\framework\[version]\Config\2.为了提高性能,该文件只包含不同于默认值的设置.并且定 ...

  10. java代码实现highchart与数据库数据结合完整案例分析(一)---饼状图

    作者原创:转载请注明出处 在做项目的过程中,经常会用到统计数据,同时会用到highchart或echart进行数据展示,highchart是外国开发的数据统计图插件, echart是我们国家开发的数据 ...