0

我有以下问题:我的程序(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中选择一个节点时,主窗口在子窗体出现后立即跳转到前面。

怎么了?

4

3 回答 3

0

要让“aNewSon”始终位于顶部,您还可以尝试将“TopMost”属性添加到新创建的表单中:

aNewSon.TopMost = true;

检查有关 TopMost属性的 Msdn。

于 2013-05-15T08:01:41.057 回答
0

将父窗体添加到构造函数尝试使用“显示”方法而不是可见 = true。

    Son aNewSon = new Son();
    aNewSon.Show(this);

可能比你还可以调用 BringToFront 方法Application.OpenForms["Form1"].BringToFront();

在你的情况下:

    Son aNewSon = new Son();
    aNewSon.Show(this);
    aNewSon.BringToFront();
于 2013-05-15T08:02:25.867 回答
0

更改Visible = true.Show(this)-> 此更改将使子窗口始终位于其顶部Parent(在本例中为主窗口)。

Son aNewSon = new Son();
aNewSon.Show(this);

如果不接受子窗体始终位于其父窗体之上,则将其更改为:

Son aNewSon = new Son();
aNewSon.Visible = true;
aNewSon.Focus();
于 2013-05-15T07:57:37.493 回答