我正在制作一个应用程序,它将有一个类似于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方法