C#Windows窗体,不在任务栏中显示表单,但在其中显示的表单集中时使其显示在前面

时间:2012-04-03 07:58:42

标签: c# windows forms taskbar

我正在创建一个具有类似于Photoshop的界面的应用程序:多个单独的表单都有助于编辑对象。所以,我将有多个表单,其中一个是“main”(提供文件菜单,设置菜单,等等),其他表单有控件,用于编辑以主窗体打开的对象。

让我们说简单一点,这是一个文本编辑器,我有MainForm和StyleForm。现在,我需要的是整个应用程序在Windows任务栏中显示为一个“栏”。这可以通过为StyleForm设置ShowInTaskbar为false来实现,但是如果我,比如聚焦其他应用程序,然后关注我的应用程序,只有MainForm将在其他窗口之上,StyleForm将保持隐藏在我专注的应用程序窗口下先前。

我在这里找到答案Make all forms associated with a program come to the front when one form is selected但它导入了一个dll。也许这有一个.net解决方案?

另外,我想在任务栏中显示不同的内容,而不是MainForm的标题,是否可能?

2 个答案:

答案 0 :(得分:11)

我将第二个表单设置为ShowInTaskBar = false,将FormBorderStyle设置为SizableToolWindow,然后使用以下代码创建它:

public partial class Form1 : Form
{
    Form2 f2;

    public Form1()
    {
        InitializeComponent();

        f2 = new Form2();
        f2.Owner = this;  // <-- This is the important thing
        f2.Show();
    }
}

这会使子格式F2保持在Form1之上,并在隐藏并显示Form1时隐藏并显示它。

修改
哦,如果这很重要,我使用Visual Studio 2010和.NET 4 Client Profile。但是,这应该适用于其他版本。

答案 1 :(得分:0)

在主窗口中,您可以捕获Focus事件,然后为每个子窗体调用BringToFront方法