将两种形式都放在顶部

Keep both forms on top

我有 2 个表格(Parent 和 child)。我想把两者都放在最前面(不是最上面)。下一个片段有效,但 parent 没有触发任何事件。我找到了这个“”,虽然它不起作用。

下一个片段适用于保留表单,但 parent 无效:

public FormMain()
{
   InitializeComponent();
   this.Activated += FormMain_Activated;
} 

private void FormMain_Activated(object sender, EventArgs e)
{
   ChildForm.Activate();
}

我尝试将 parent 表单集中在“GotFocus”和“Activated”上,但这是行不通的。

注意:对于child形式我有这个片段:

        protected override CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;
            // turn on WS_EX_TOOLWINDOW style bit
            cp.ExStyle |= 0x80;
            return cp;
        }
    }

您描述的行为是自有表单的行为;类似于绘图程序中的浮动工具面板,当它关联的主要 window 执行 minimize/restore 时应该 minimize/restore,但可以独立移动并被其他 windows 当主绘图程序也被覆盖时

为此,您可以使主窗体成为工具面板窗体的所有者。如果主窗体负责打开工具面板:

toolPanel.Show(this);   //the code is in the main form so `this` refers to the current instance of the main form

如果其他表单负责显示这两个表单,则更像是 toolPanel.Show(mainForm) - 我们传递给显示我们想要作为我们正在显示的表单的所有者的表单