问题描述
首先主窗体主要代码:privatevoidMenu_Click(objectsender,EventArgse){WinOperationClassP_Menu=newWinOperationClass();//声明对WinForm窗体进行操作的类对象P_Menu.ShowForm((ToolStripMenuItem)sender,this);//调用类中的方法,完成对窗体中ToolStripMenuItem控件相应项的操作}涉及到的类主要代码:winoperationclasspublicvoidShowForm(ToolStripMenuItemcontrol,Formform){switch(control.Tag.ToString()){case"1":EmployeeInfoemployee=newEmployeeInfo();employee.MdiParent=form;employee.StartPosition=FormStartPosition.CenterScreen;employee.Show();break;case"2":CompanyInfocompany=newCompanyInfo();company.MdiParent=form;company.StartPosition=FormStartPosition.CenterScreen;company.Show();break;case"3":CustomerInfocustomer=newCustomerInfo();customer.MdiParent=form;customer.StartPosition=FormStartPosition.CenterScreen;customer.Show();break;case"4":Loginlogin=newLogin();login.StartPosition=FormStartPosition.CenterScreen;login.ShowDialog();form.Dispose();//释放窗体资源break;EmployeeInfo部分代码:namespaceCyberCafe.BaseRecord{publicpartialclassEmployeeInfo:Form{publicEmployeeInfo(){InitializeComponent();}当我点主窗口的其中一个菜单的时候,比如传的变量是1,那么执行到case1,这里。现问题是:1、结决case1这个窗口再次实例化问题2、结决,当我点击case2,的时候,能判断是否有其他子窗口,如果有,则自动关闭其他子窗口,并且转到这个case2新的窗口上本人是新手,请把代码写全,并且告诉本人加到哪里,在非常感谢。
解决方案
解决方案二:
可以你把窗体对象生名到类中EmployeeInfoemployee;if(employee!=null||employee.IsDisposed==false){employee.close();}加到switch前面就可以了前面的是判断一下是否new了对象后面的是否被释放,也就是窗体有没有关闭false
解决方案三:
我把上面代码放到switch前面了。提示我下面内容。在线等错误1“CyberCafe.BaseRecord.EmployeeInfo”不包含“close”的定义,并且找不到可接受类型为“CyberCafe.BaseRecord.EmployeeInfo”的第一个参数的扩展方法“close”(是否缺少using指令或程序集引用?)D:CyberCafeCyberCafeItemClassWinOperationClass.cs4326CyberCafe错误2不能在此范围内声明名为“employee”的局部变量,因为这样会使“employee”具有不同的含义,而它已在“父级或当前”范围中表示其他内容了D:CyberCafeCyberCafeItemClassWinOperationClass.cs4934CyberCafe
解决方案四:
publicvoidShowForm(ToolStripMenuItemcontrol,Formform){FormnewForm=null;switch(control.Tag.ToString()){case"1":newForm=OpenForm<EmployeeInfo>();break;case"2":newForm=OpenForm<CompanyInfo>();break;case"3":newForm=OpenForm<CustomerInfo>();break;case"4":newForm=OpenForm<Login>();break;}newForm.MdiParent=form;newForm.StartPosition=FormStartPosition.CenterScreen;FormCollectionforms=Application.OpenForms;foreach(FormeachForminforms){if((eachForm.Name!=form.Name)&&(newForm.Name!=eachForm.Name)){eachForm.Close();}}if(control.Tag.ToString()=="4"){newForm.ShowDialog();newForm.Dispose();}else{newForm.Show();}}publicFormOpenForm<T>()whereT:Form,new(){Formform=Application.OpenForms[typeof(T).Name];if(form==null){form=newT();}returnform;}}
解决方案五:
完了,大哥,我程序一按你这么一改,这个类瘫了,等我还原下吧。
解决方案六:
大哥,你这种方法不行,我一这么改,我的其它代码就提示我什么string,class什么的,
解决方案七:
提示我错误1应输入class、delegate、enum、interface或structD:CyberCafeCyberCafeItemClassWinOperationClass.cs10916CyberCafe
解决方案八:
??????你的employeeinfo是不是窗体???窗体怎么会没有close方法呢?
解决方案九:
是窗体,只因为close打错了,应该首字母大写才对Close,但是我大写后,那段代码加到他说的位置上也不行。