MDI窗体程序中主窗体有N个子窗体,请问实例化问题?在线等

gincer520 2009-01-17 10:14:12
首先主窗体主要代码:
private void Menu_Click(object sender, EventArgs e)
{
WinOperationClass P_Menu = new WinOperationClass(); //声明对WinForm窗体进行操作的类对象
P_Menu.ShowForm((ToolStripMenuItem)sender, this); //调用类中的方法,完成对窗体中ToolStripMenuItem控件相应项的操作
}

涉及到的类主要代码:winoperationclass

public void ShowForm(ToolStripMenuItem control, Form form)
{
switch (control.Tag.ToString())
{
case "1":
EmployeeInfo employee = new EmployeeInfo();
employee.MdiParent = form;
employee.StartPosition = FormStartPosition.CenterScreen;
employee.Show();
break;
case "2":
CompanyInfo company = new CompanyInfo();
company.MdiParent = form;
company.StartPosition = FormStartPosition.CenterScreen;
company.Show();
break;
case "3":
CustomerInfo customer = new CustomerInfo();
customer.MdiParent = form;
customer.StartPosition = FormStartPosition.CenterScreen;
customer.Show();
break;
case "4":
Login login = new Login();
login.StartPosition = FormStartPosition.CenterScreen;
login.ShowDialog();
form.Dispose(); //释放窗体资源
break;

EmployeeInfo部分代码:

namespace CyberCafe.BaseRecord
{
public partial class EmployeeInfo : Form
{
public EmployeeInfo()
{
InitializeComponent();
}


当我点主窗口的其中一个菜单的时候,比如传的变量是1,那么执行到case 1 ,这里。
现问题是:1、结决case 1 这个窗口再次实例化问题
2、结决,当我点击case 2,的时候,能判断是否有其他子窗口,如果有,则自动关闭其他子窗口,并且转到这个case 2新的窗口上

本人是新手,请把代码写全,并且告诉本人加到哪里,在非常感谢。
...全文
123 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gincer520 2009-01-17
  • 打赏
  • 举报
回复
非常感谢您的帮忙,但本人真是有点看不懂,可能是你的方法可以,小弟真是新手,没办法完成,如果想帮小弟,请告知QQ,小弟把原程序发给您,帮帮小弟,太谢谢了,小弟新学,不容易的。
king19840811 2009-01-17
  • 打赏
  • 举报
回复
忘了关闭窗口了
private void Menu_Click(object sender, EventArgs e)
{
OnShowFrm(sender,e);
EmployeeInfo eFrm= new EmployeeInfo(); //声明对WinForm窗体进行操作的类对象
this.Hide();
eFrm.showDialog(this); //调用类中的方法,完成对窗体中ToolStripMenuItem控件相应项的操作
this.Close();
}
}
king19840811 2009-01-17
  • 打赏
  • 举报
回复
private void Menu_Click(object sender, EventArgs e)
{
OnShowFrm(sender,e);
EmployeeInfo eFrm= new EmployeeInfo(); //声明对WinForm窗体进行操作的类对象
eFrm.showDialog(this); //调用类中的方法,完成对窗体中ToolStripMenuItem控件相应项的操作
}
}

public delegate void MdiShowEventHandler(object sender,EventArgs e);

public event MidShowEventHandler ShowFrm;

private void OnShowFrm(object sender,EventArgs e)
{
MdiShowEventHandler showfrm=ShowFrm;

if(showfrm!=null)
showfrm(sender,e);
}


namespace CyberCafe.BaseRecord
{
public partial class EmployeeInfo : Form
{
public EmployeeInfo()
{
InitializeComponent();

Form1 frm1=this.owner as Form1;
frm1.ShowFrm+=new MdiShowEventHandler(InitiaFrm)

}
private void InitiaFrm(object sender,EventArge e)
{
ToolStripMenuItem control=sender as ToolStripMenuItem;
switch (control.Tag.ToString())
{
case "1":
EmployeeInfo employee = new EmployeeInfo();
employee.MdiParent = form;
employee.StartPosition = FormStartPosition.CenterScreen;
employee.Show();
break;
case "2":
CompanyInfo company = new CompanyInfo();
company.MdiParent = form;
company.StartPosition = FormStartPosition.CenterScreen;
company.Show();
break;
case "3":
CustomerInfo customer = new CustomerInfo();
customer.MdiParent = form;
customer.StartPosition = FormStartPosition.CenterScreen;
customer.Show();
break;
case "4":
Login login = new Login();
login.StartPosition = FormStartPosition.CenterScreen;
login.ShowDialog();
form.Dispose(); //释放窗体资源
break;
}
}
}
}

仅供参考。
gincer520 2009-01-17
  • 打赏
  • 举报
回复
是的,在主窗体,打开不同的子窗体,但打开一个后,要求判断是否有其它子窗体,有的话自动关闭其它的,
king19840811 2009-01-17
  • 打赏
  • 举报
回复
楼主是想根据菜单上的选择打开不同的窗体?
gincer520 2009-01-17
  • 打赏
  • 举报
回复
没有一个人能帮助我吗?

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧