C# 两个窗体 的问题

在一个程序中有两个窗体,刚进入程序时随便显示哪个窗体.但两个窗体可以任务切换显示,且只有一个窗体显示出来.当关闭任何一个窗体时程序都结束.可以说这两个窗体是平等的地位,这种情况怎么实现?可能我问题描述的不是很清楚,请仔细看下
最新回答
梦幻樱雪

2024-10-17 15:23:14

首先在项目中创建两个窗体类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的形式显示和隐藏,用户所作的操作都是对内存中实例化后的窗体进行,程序实行完毕,内存释放,窗体才会被真正释放。
纯手打,代码经本地测试无误~
梦他

2024-10-17 11:52:54

问题解释:首先显示一个登录窗体,当点击登录后,进入下一个窗体,而登录窗体关闭。当在下一个窗体的操作完成后,点击关闭就退出该系统。不知是否是这样?
若是这样,代码操作如下:
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;
鱼沉秋水

2024-10-17 15:46:33

依然使用一个主窗体,一个父窗体。
互换通过Show()和Hide()函数控制//不要使用ShowDialog()。
子窗体关闭带动父窗体关闭可以使用委托。