怎么避免同一个用户拥有多个窗体?急!
比如一个窗体内有很多的用户图标,双击一个用户便会打开一个窗体,怎么避免同一个用户拥有多个窗体?? 
 解决掉立刻给分!!!!
------解决方案--------------------楼主说的是不是这样的单例模式,这是我写的一个代码,就是这样的。 
         ///  <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;                   
                 } 
             } 
         }
------解决方案--------------------打开按钮: 
 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(); 
 		}
------解决方案--------------------最简单办法,把窗体都改成模式的!showDialog
------解决方案--------------------不知道用户是不是都是打开的同一类型的窗体。 
 如果是:在窗体中加一个public static arrylist;把用户名作为参数传递到要打开的窗体,打开之前判断用户名是否存在 arrylist中,不存在则把用户名增加到 arrylist 中,打开窗体,如果存在在不重复打开。窗体关闭时从arrylist删除用户。
------解决方案--------------------此问题最好的也是最简单的解决方法就是互斥体 
 bool isCreated; 
             //创建一个互斥体,使窗体只能创建一个实例。 
             Mutex mutex = new Mutex(true,  "要创建的窗体名 ", out isCreated); 
             if (isCreated) 
             { 
                 Form1 form1 = new Form1(); 
                 form1.ShowDialog(); 
                 mutex.ReleaseMutex(); 
             }