我遇到以下问题: 我的程序(Winforms)有一个带有treeView控件的主窗口。 当用户在treeView中选择一个节点时,应创建一个新的子窗口。
这很好用。 但问题是,在这个子窗口变为可见之后,主窗口会出现在前面并部分隐藏这个子窗口。
我已经构建了一个小模型,以确保它不仅与我的程序相关:
namespace FatherAndSon
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Son aNewSon = new Son();
aNewSon.Visible = true;
}
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
Son aNewSon = new Son();
aNewSon.Visible = true;
}
}
}
当我按下button1时,一切都很好但是当我在treeView中选择一个节点时,主窗口会在子表单出现后立即跳到前面。
有什么问题?
答案 0 :(得分:0)
将Visible = true
更改为.Show(this)
- >此更改将使子窗口始终位于其Parent
(本例中为主窗口)之上。
Son aNewSon = new Son();
aNewSon.Show(this);
如果儿童表格始终位于其父母之上是不可接受的,则将其更改为:
Son aNewSon = new Son();
aNewSon.Visible = true;
aNewSon.Focus();
答案 1 :(得分:0)
答案 2 :(得分:0)
将父表单添加到构造函数中尝试使用“Show”方法而不是visible = true。
Son aNewSon = new Son();
aNewSon.Show(this);
可能比您还可以调用BringToFront方法Application.OpenForms["Form1"].BringToFront();
在你的情况下:
Son aNewSon = new Son();
aNewSon.Show(this);
aNewSon.BringToFront();