我正在创建一个具有类似于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的标题,是否可能?
答案 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方法