这是我的第一个问题,所以我希望我做对了。 我目前正在使用Visual Studio Express 2017执行C#Windows Forms App项目。
我已经在Stack Overflow和YouTube上搜索了类似的示例,但找不到任何示例。在所附的图像中,我在项目中有3种形式。作为主要控制窗体的Form1上有2个按钮。 Form2的Form2button和Form3的Form3button。当我单击From2button时,我可以继续单击并打开多个Form2,也可以打开多个Form3,没有限制。我想运行该程序,如果我单击Form2button,它只能加载一个Form2实例,而与Form3button相同。
但是,如果我单击Form3button并打开了Form2,则我希望Form2关闭并且仅打开Form3以及Form3已打开,然后单击Form2button,Form3将关闭,Form2将打开。 Form1一直在屏幕上处于活动状态。
namespace MultiWindows
{ 公共局部类Form1:表单 { 公共Form1() { InitializeComponent(); }
private void Form2button_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
}
private void Form3Button_Click(object sender, EventArgs e)
{
Form3 f3 = new Form3();
f3.Show();
}
}
}
答案 0 :(得分:0)
到目前为止,在其他人的帮助下,我已经设法使它起作用。我不认为他们的帮助。
因此,当我运行程序并单击Form2button时,它将打开Form2,反之亦然。当我单击Form3button时,它不会关闭Form2,而仅在屏幕上显示Form3,因此两个窗体在屏幕上都处于活动状态。
如果我通过单击右上角来关闭表单,除非重新启动程序,否则无法重新打开已关闭的表单。
命名空间MultiWindows {
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private Form2 f2 = null;
private Form3 f3 = null;
private void Form2button_Click(object sender, EventArgs e)
{
if (this.f2 == null)
{
f2 = new Form2();
f2.Show();
}
else
{
f2.BringToFront();
}
}
private void Form3Button_Click(object sender, EventArgs e)
{
if (this.f3 == null)
{
f3 = new Form3();
f3.Show();
}
else
{
f3.BringToFront();
}
}
}
}