如何控制应用程序的窗体只能打开一次?

解决方案 »

  1.   

    是浏览器窗口吗? 如果是,在链接属性target="" 指向同一个标志,如:target="guding"
      

  2.   

    sorry,标题就是应用程序,我答非所问了,^_^
      

  3.   

    做一个计数器 或用BOOL类型控制
     当为TRUE 时说明打开状态
     FALSE 关闭状态.
     如果运行后只让他运行一次类似
     甚至没区别..
      

  4.   

    在窗体外部还是内部?在外部可以使用以下代码:
    /// <summary>
            /// 指定一个类型,返回该类型的窗体实例
            /// </summary>
            /// <param name="frmType"></param>
            /// <returns></returns>
            public static Form GetForm(Type frmType)
            {
                foreach (Form item in Application.OpenForms)
                {
                    if (item.GetType() == frmType)
                        return item;
                }
            }
    调用方法:Form frm = GetForm(typeof(FrmDBSet));
    if (frm == null)
        frm = new FrmDBSet();
      

  5.   

    只能存在一个的Check.Dim processes() As Processprocesses = Process.GetProcessesByName(APP_PROC_NAME)If processes.Length > 0 Then    Application.Exit()
        Exit Sub
    End If
      

  6.   

    某BUTTON事件里面:
    Form frm;
    Button_OnClick(XXXXXXXXX)
    {
        if(frm==null)
        {
            frm=new Form();
            frm.Show();
        }
        else
        {
           frm.Show();
        }
    }
    在frm的Closing实践里面
    e.Cancel=true;
    this.Hide();就行了
      

  7.   

    如果是应用程序只能开一个的话 
    就:
    在Form_Load里面
    Process process=Process.GetProcessByName("你的应用程序名字");
    if(process!=null)
    {
       MessageBox("已经有一个实例运行了","提示");
       Process.GetCureentProcess().Kill();
    }  
      

  8.   

    主窗体还是子窗体?
    如果是主窗体,就去进程中搜索你的程序的进程,如果已经存在,则不能打开
    如果是子窗体,那就在主窗体中设置一个标志,当打开一个子窗体的时候,这个标志置成true,在打开子窗体的时候,判断这个标志是否为true,如果是true,则不能打开子窗体
      

  9.   


    楼主的描述是否应该是这样子:“在主程序打开某个类型的窗体,如果该类型的窗体已打开过,显示已打开的窗体,否则创建一个该类型的新窗体”,如果是这样的需求的话,可以参考我5楼的回复以及下面这段调用方法。
    Form frm = GetForm(typeof(FrmDBSet));
    if (frm == null)
        frm = new FrmDBSet();frm.Show();
    frm.MdiParent=this;   
      

  10.   

    楼主是想做什么?是想让一个程序不能在同一时间运行两个例程还是整个窗体只运行一次,以后就再不运行了?如果想让两个例程只运行一次,可以使用单例模式。如果让整个窗体只运行一次,以后再不运行,何不把那个窗体写成一个Dll,动态加载,首次加载后运行一下,然后就将dll删除或在注册表里记录一下,以后不再加载运行应该可以了吧。呵呵,只是思想,目前还没有动手实现。楼主见谅。
      

  11.   

    用showdialog方式打开窗口可以保证在打开的窗口关闭前,不可以对show出当前窗体的窗体做任何操作
      

  12.   

    在show的时候还有一个owner要设置一下
      

  13.   


    bool AppFlag;
    System.Threading.Mutex m  =  new System.Threading.Mutex(true, AppName, out AppFlag);
                if (AppFlag) 
                {}