【发布时间】:2012-10-03 04:13:39
【问题描述】:
在 .Net WinForms 中,我有两种形式。 Form1 已打开且处于活动状态。如何打开新表单(Form2):
- Form1 必须有焦点
- Form2在Form1下打开(后台Form1)
第一点很简单,见stackoverflow... 但我不知道如何在 Form1 下显示 Form2。 谢谢。
编辑
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();
}
}
Form2
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
textBox1.Focus();
}
protected override bool ShowWithoutActivation
{
get
{
return true;
}
}
protected override CreateParams CreateParams
{
get
{
//make sure Top Most property on form is set to false
//otherwise this doesn't work
int WS_EX_TOPMOST = 0x00000008;
CreateParams cp = base.CreateParams;
cp.ExStyle |= WS_EX_TOPMOST;
return cp;
}
}
【问题讨论】:
-
你的意思是并排显示表格然后你必须设置表格的大小和位置。
-
不,我的意思是设置Form2的Z-order。我想仍将 Form1 放在顶部,但我无法将 Form1 设置为 TOP MOST(因为 Form1 可以是应用程序中的另一个表单)。关键是:每个自动(以编程方式)打开的表单都必须在活动表单(在这种情况下为 Form1)下打开,而不是 TOP。