您的位置:程序门 -> .net技术 -> c#



怎么避免同一个用户拥有多个窗体?急!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


怎么避免同一个用户拥有多个窗体?急![已结贴,结贴人:burnett]
发表于:2007-01-12 11:21:05 楼主
比如一个窗体内有很多的用户图标,双击一个用户便会打开一个窗体,怎么避免同一个用户拥有多个窗体??
解决掉立刻给分!!!!
发表于:2007-01-12 11:24:481楼 得分:90
楼主说的是不是这样的单例模式,这是我写的一个代码,就是这样的。
                ///   <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;                                    
                                }
                        }
                }
发表于:2007-01-12 11:50:122楼 得分:5
打开按钮:
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();
}
发表于:2007-01-12 11:56:373楼 得分:3
最简单办法,把窗体都改成模式的!showdialog
发表于:2007-01-12 11:56:394楼 得分:0
么避免同一个用户拥有多个窗体??

在建立这个图标时,判断一下是否已经存在这个用户不就行了。
发表于:2007-01-12 13:09:055楼 得分:1
不知道用户是不是都是打开的同一类型的窗体。
如果是:在窗体中加一个public   static   arrylist;把用户名作为参数传递到要打开的窗体,打开之前判断用户名是否存在   arrylist中,不存在则把用户名增加到   arrylist   中,打开窗体,如果存在在不重复打开。窗体关闭时从arrylist删除用户。
发表于:2007-01-12 13:21:296楼 得分:1
此问题最好的也是最简单的解决方法就是互斥体
bool   iscreated;
                        //创建一个互斥体,使窗体只能创建一个实例。
                        mutex   mutex   =   new   mutex(true,   "要创建的窗体名 ",   out   iscreated);
                        if   (iscreated)
                        {
                                form1   form1   =   new   form1();
                                form1.showdialog();
                                mutex.releasemutex();
                        }
发表于:2007-01-12 13:32:377楼 得分:0
打开后,将按钮禁用,关闭子窗体时,用javascript恢复按钮的状态。
发表于:2007-01-12 18:13:358楼 得分:0
问题应该是说不允许出现多个同一样的应用程序吧?检查进程中是否存在这个application就可以控制了。
发表于:2007-01-12 19:41:019楼 得分:0
模式窗体?


快速检索

最新资讯
热门点击