C#Windows窗体,不在任务栏中显示窗体,但当显示在任务栏中的窗体聚焦时,使其显示在前面



我正在制作一个应用程序,它将有一个类似于Photoshop的界面:多个单独的表单都有助于编辑一个对象。因此,我将有多个窗体,其中一个是"main"(提供文件菜单、设置菜单、about等),其他窗体具有编辑在主窗体中打开的对象的控件。

为了简单起见,我们假设这是一个文本编辑器,我有MainForm和StyleForm。现在,我需要的是让整个应用程序在windows任务栏中显示为一个"栏"。这可以通过将StyleForm的ShowInTaskbar设置为false来实现,但如果我关注其他应用程序,然后关注我的应用程序,只有MainForm会位于其他窗口之上,StyleForm将保持隐藏在我之前关注的应用程序的窗口下。

我在这里找到了答案。当选择了一个表单但它导入了一个dll时,使与程序相关的所有表单都显示在前面。也许有一个.net解决方案?

此外,我想在任务栏中显示一些不同的内容,而不是MainForm的标题,这可能吗?

我将第二个表单设置为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客户端配置文件。不过,这应该适用于其他版本。

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

最新更新