比如一个窗体内有很多的用户图标,双击一个用户便会打开一个窗体,怎么避免同一个用户拥有多个窗体??
解决掉立刻给分!!!!

解决方案 »

  1.   

    楼主说的是不是这样的单例模式,这是我写的一个代码,就是这样的。
            /// <summary>
            /// 引入改进的单件模式,保证一个用户之对应一个对话框
            /// </summary>
            /// <param name="_ui"></param>
            /// <returns></returns>
            public static ChatForm GetChatFormInstance(MainForm _parent,UserInfo _ui,int _myuid)
            {
                lock (formtable)//一个静态的formtable表。用于存放已经打开的form,
                {
                    if (formtable.Contains(_ui.Uid))
                        return (formtable[_ui.Uid] as ChatForm);
                    else
                    {
                        ChatForm cf= new ChatForm(_parent,_ui,_myuid);
                        formtable.Add(_ui.Uid,cf);
                        return cf;                  
                    }
                }
            }
      

  2.   

    打开按钮:
    for (int i = 0; i < this.MdiChildren.Length; i++)
    {
    if (this.MdiChildren[i].Name == "CarType")
    {
    frm = this.MdiChildren[i];
    break;
    }
    }
    if (frm == null)
    {
    this.Refresh();
    Member.CarType.ShowCarType(this) ;//打开的方法
    }
    else
    {
    frm.BringToFront();
    frm.Activate();
    }
    //打开的方法:
    public static void ShowCarType(Form FName)
    {
    CarType frm = new CarType();
    frm.MdiParent = FName ;
    frm.Show();
    }
      

  3.   

    最简单办法,把窗体都改成模式的!showDialog
      

  4.   

    不知道用户是不是都是打开的同一类型的窗体。
    如果是:在窗体中加一个public static arrylist;把用户名作为参数传递到要打开的窗体,打开之前判断用户名是否存在 arrylist中,不存在则把用户名增加到 arrylist 中,打开窗体,如果存在在不重复打开。窗体关闭时从arrylist删除用户。
      

  5.   

    此问题最好的也是最简单的解决方法就是互斥体
    bool isCreated;
                //创建一个互斥体,使窗体只能创建一个实例。
                Mutex mutex = new Mutex(true, "要创建的窗体名", out isCreated);
                if (isCreated)
                {
                    Form1 form1 = new Form1();
                    form1.ShowDialog();
                    mutex.ReleaseMutex();
                }
      

  6.   

    打开后,将按钮禁用,关闭子窗体时,用javascript恢复按钮的状态。
      

  7.   

    问题应该是说不允许出现多个同一样的应用程序吧?检查进程中是否存在这个Application就可以控制了。