程序以及窗体运行的唯一性汇总

原创 2006年05月24日 13:57:00

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

 

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

http://blog.csdn.net/knight94/archive/2006/03/16/625809.aspx

 

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

http://blog.csdn.net/knight94/archive/2006/05/17/742324.aspx

 

如果不是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#窗体运行的唯一性问题

经常看到有人讨论程序运行唯一性或者窗体运行的唯一性问题。要做到一般窗体唯一打开的话,其实也是很简单的,需要在窗体中去做一些简单代码即可了。如下就用一个名叫“frmUniqueForm”窗体类来说明。首...
  • VirtualDesktop
  • VirtualDesktop
  • 2006年08月25日 17:27
  • 2463

VB 让别的程序在自己窗体中运行

Private Const GW_HWNDNEXT = 2 Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal ...
  • u012187684
  • u012187684
  • 2014年01月15日 16:58
  • 788

VB 让外部程序在VB程序的窗体里面运行

Option ExplicitPrivate Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassNa...
  • lbuskeep
  • lbuskeep
  • 2011年07月17日 23:28
  • 3461

java 窗体程序

实现功能:   窗体居中,多选框,下拉框,按钮,点击按钮关闭 import java.awt.Button; import java.awt.Checkbox; import java.awt.C...
  • qq_27292113
  • qq_27292113
  • 2017年01月20日 17:50
  • 973

C#Windows窗体组成基本思路和控件使用

创建C#窗体时会产生一个主窗体(假设为Form1)此窗体被默认为程序的启动窗体, C#Windows程序有一个主程序,此主程序会加载创建的窗体Form1,而Form1窗体 的控件设计例如样式、位置和本...
  • riyuedangkong1
  • riyuedangkong1
  • 2016年09月16日 11:01
  • 985

C#窗体程序带参数

在MFC中给窗体程序加参数很简单,因为默认的main(argn,argv)函数就是带参数的,可以直接使用argv。 但是C#中默认的main()不带参数,是这个样子的: [STAThread] s...
  • gaiazhang
  • gaiazhang
  • 2016年12月22日 14:00
  • 647

VC++实现程序只运行一个实例

原文地址:http://www.cctry.com/thread-8229-1-1.html                   http://www.vckbase.com/index.php...
  • WUYUAN2011WOAINI
  • WUYUAN2011WOAINI
  • 2012年10月18日 23:09
  • 5701

C#程序运行过程

第一部:进入static void Main()  第二部:运行static void Main() 中的Application.Run(new Form1());在这中间对窗体进行构造。 ...
  • ustbkuang
  • ustbkuang
  • 2013年11月22日 09:57
  • 686

WPF 打开窗体唯一性

public Window1 newwin;//先定义一个公共Window1娈量,前提必须有Window1窗体 //在事件中代码 if (newwin == null||newwin.IsVi...
  • DENQH
  • DENQH
  • 2012年01月06日 20:16
  • 799

关于获取.net,winform应用程序主窗体问题

1、主窗体定义: 就是在应用程序中通过application.run启动的第一个窗体 2、设想的解决方案: (1)通过System.Diagnostics.Process().GetCurren...
  • jzt_designer
  • jzt_designer
  • 2013年08月19日 11:58
  • 2044
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:程序以及窗体运行的唯一性汇总
举报原因:
原因补充:

(最多只允许输入30个字)