在一个程序中有两个窗体,刚进入程序时随便显示哪个窗体.但两个窗体可以任务切换显示,且只有一个窗体显示出来.当关闭任何一个窗体时程序都结束.可以说这两个窗体是平等的地位,这种情况怎么实现?可能我问题描述的不是很清楚,请仔细看下
首先在项目中创建两个窗体类Form1和Form2;然后在项目中创建一个静态类并定义两个窗体类型的静态属性,例如:public static class Class1 { public static Form LocalForm1; public static Form LocalForm2; }在这两个窗体中各添加一个按钮用以打开另外一个窗体,窗体1中打开窗体2的按钮click事件处理如下:private void button1_Click(object sender, EventArgs e) { Class1.LocalForm2.Show(); this.Hide(); }同理,窗体2中用来打开窗体1的按钮click事件就为:private void button1_Click(object sender, EventArgs e) { Class1.LocalForm1.Show(); this.Hide(); }然后,为每一个窗体的FormClosed事件指定事件处理,形如:private void Form_FormClosed(object sender, FormClosedEventArgs e) { Application.Exit(); }最后,项目启动类Program的代码如下:static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Class1.LocalForm1 = new Form1(); Class1.LocalForm2 = new Form2(); Application.Run(Class1.LocalForm1); } }原理如下:在程序启动时main方法就会实例化Form1和Form2两个窗体,并作为静态属性保存在内存中,在整个软件的执行中窗体都以show和hide的形式显示和隐藏,用户所作的操作都是对内存中实例化后的窗体进行,程序实行完毕,内存释放,窗体才会被真正释放。纯手打,代码经本地测试无误~
问题解释:首先显示一个登录窗体,当点击登录后,进入下一个窗体,而登录窗体关闭。当在下一个窗体的操作完成后,点击关闭就退出该系统。不知是否是这样?若是这样,代码操作如下:1.先操作Program.cs文件static class Program{/// <summary>/// 应用程序的主入口点。/// </summary>[STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); frmLogin logindlg = new frmLogin(); DialogResult result = logindlg.ShowDialog(); //先显示的frmLogin 窗体 if (result == DialogResult.OK) { Application.Run(new frmMain()); //显示frmMain窗体 } }}2.操作frmLogin 窗体在其窗体的登录按钮下代码:this.Close();this.DialogResult = System.Windows.Forms.DialogResult.OK;