c#多窗口切换

前提:我开发的一个winfrom程序(不是MDI),有窗体A,窗体B 需求:在点击窗体A上的按钮时,窗体A隐藏,进入窗体B,在窗体B退出时,窗体A显示。 问题:(1)如果使用 this.hide()虽然可以隐藏A窗体,进入B窗体,但如何在显示A呢,如果新实例化A窗体在SHOW的话,那样会产生同时存在两个A窗体的问题(一个是以前被隐藏的显示了,另外一个是新实例化show出来的),所以这个办法不行 (2)不能使用this.close()方法,因为在窗体中chosing事件已经使用。visble方法也试过不行 看看大家还有什么好办法没
2026年09月28日 07:21
有6个网友回答
网友(1):

在窗体A的按钮事件中添加代码:

FormB frm = new FormB();
if(frm.ShowDiaLog()==DialogResult.OK)
{

}

这时窗体A隐藏,显示窗体B,并根据窗体B的返回值来决定下一步的操作。

网友(2):

using System;
using System.Windows.Forms;

namespace 图像处理
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
f2.SetVisible(this);
this.Visible = false;
}
}
}

using System.Windows.Forms;

namespace 图像处理
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

private Form1 f1;
public void SetVisible(Form1 f)
{
f1 = f;
}

private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
this.Visible = false;
f1.Visible = true;
}
}
}

网友(3):

在A的按钮点击事件中写上
form b=new form();
this.hide();//隐藏A
b.showdialog();//此时A窗体代码将被挂起.
this.show();//在b被关闭或返回值后将执行此代码,显示A

网友(4):

窗体不也是对像吗?

A窗体里面写个public 方法,可以控制该窗体的 visible 属性。

A 的按钮click时,隐藏自己,创建B窗体,B退出时,调用自己的owenr的 那个Public方法,显示A窗体。

网友(5):

A 按钮的click事件里

FrmA.Hide()
FrmB frmB_Instance = new FrmB();
frmB_Instance.ShowDialog();
FrmA.Show();

网友(6):

把窗体A传到窗体B里试试