C# 如何在活动窗体下打开窗体
在.Net WinForms中,我有两种形式。Form1已打开并处于活动状态。我如何打开新表格(表格2):C# 如何在活动窗体下打开窗体,c#,.net,winforms,window,C#,.net,Winforms,Window,在.Net WinForms中,我有两种形式。Form1已打开并处于活动状态。我如何打开新表格(表格2): Form1必须有焦点 Form2在Form1下打开(后台Form1) 第一点很简单,请看 但我不知道如何在Form1下显示Form2。 谢谢 编辑 public partial class Form1 : Form { Form2 frm; public Form1() { InitializeComponent(); frm
- Form1必须有焦点
- Form2在Form1下打开(后台Form1)
public partial class Form1 : Form
{
Form2 frm;
public Form1()
{
InitializeComponent();
frm = new Form2();
}
private void Form1_Load(object sender, EventArgs e)
{
textBox1.Focus();
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
this.AddOwnedForm(frm);
frm.Show();
frm.SendToBack();
this.BringToFront();
}
private void button1_Click(object sender, EventArgs e)
{
frm.Show();
frm.SendToBack();
this.BringToFront();
}
}
表格2
您只需实例化Form2并显示它,例如:
var form2 = new Form2();
form2.Visible = true;
然后将Form1设置为活动表单(假设这是在Form1的代码中完成的-因此是this
):
我认为第二点你需要做的是:
var form2 = new Form2();
form2.MdiParent = form1; //form1 is your parent form; use this operator in case you are creating this form from out base form
form2.WindowState = FormWindowState.Normal;
form2.Show();
有关更多详细信息,请参阅:
编辑
请参阅下面的代码,该代码显示frm在Form1顶部打开
public partial class Form1 : Form
{
Form2 frm;
public Form1()
{
InitializeComponent();
frm = new Form2();
}
private void Form1_Load(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Maximized;
textBox1.Focus();
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
if (!frm.Visible)
{
this.AddOwnedForm(frm);
frm.Show();
frm.SendToBack();
this.BringToFront();
}
}
private void button1_Click(object sender, EventArgs e)
{
this.AddOwnedForm(frm);
frm.Show();
frm.SendToBack();
this.BringToFront();
}
}
我猜想你想要一个对话
var form2 = new Form2();
form2.Visible = true;
this.ShowDialog();
我试过了,但没用。在Form1中,我创建了Form2:Form2 frm=new Form2();frm.可见=真实;这个。布林托夫隆();我们只需使用
form2.SendToBack()代码>但我不想创建MDI表单!将打开的表单不止一个,并且来自不同的代码位置。这是我想做的一个简短的例子。我认为为了在一个单亲表单下查看多个表单,您必须使用多文档界面。您可以将当前父窗体设置为具有MDIChild,如下所示:this.IsMdiContainer=true;然后将form2.MdiParent设置为此;否则,另一种方法是使用ShowDialog()。但是,ShowDialog将表单数量限制为2个。问题是我无法使用MDI,因为该应用程序是另一家公司的模块化应用程序,我为该应用程序制作了一个模块。因此,我的应用程序不是MDI,我无法使用此应用程序。请尝试此应用程序。var form2=新form2();本.新增表格(表格2);表2.Show();让我知道这是否适合你。您可以使用此命令删除表单。RemoveOwnedForm(form2);一旦form2关闭。不,仍然不工作。下面是一个简单的测试代码:你的意思是并排显示表单,然后你必须设置表单的大小和位置。不,我的意思是设置表单2的Z顺序。我仍然希望Form1位于顶部,但我不能将Form1设置为最顶部(因为Form1可以是应用程序中的另一个表单)。要点是:每个自动(以编程方式)打开的表单必须在活动表单(本例中为Form1)下打开,而不是在顶部。
public partial class Form1 : Form
{
Form2 frm;
public Form1()
{
InitializeComponent();
frm = new Form2();
}
private void Form1_Load(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Maximized;
textBox1.Focus();
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
if (!frm.Visible)
{
this.AddOwnedForm(frm);
frm.Show();
frm.SendToBack();
this.BringToFront();
}
}
private void button1_Click(object sender, EventArgs e)
{
this.AddOwnedForm(frm);
frm.Show();
frm.SendToBack();
this.BringToFront();
}
}
var form2 = new Form2();
form2.Visible = true;
this.ShowDialog();