C# 防止表单出现在前面

C# 防止表单出现在前面,c#,winforms,C#,Winforms,我有两个最上面的表格非常接近(表格A和B)。如果我单击A,它会出现在前面,并将其自身置于表格B上。我试图覆盖WndProc方法: protected override void WndProc(ref Message m) { if (m.Msg == 0x0201 || m.Msg == 0x0202 || m.Msg == 0x0203) { return; } base.WndProc(ref m); } 尽管如此,如果我点击表

我有两个最上面的表格非常接近(表格A和B)。如果我单击A,它会出现在前面,并将其自身置于表格B上。我试图覆盖WndProc方法:

protected override void WndProc(ref Message m)
{
     if (m.Msg == 0x0201 || m.Msg == 0x0202 || m.Msg == 0x0203)
     {
         return;
     }

     base.WndProc(ref m);
}

尽管如此,如果我点击表单A,它仍然覆盖表单B,所以我猜它一定是其他一些Msg代码。希望有人知道怎么做。

ActiveForm下提供了BringToFront/BringToBack函数。我建议你调查一下。在我脑子里,我可能会忽略其中一个,并确保当表格A有焦点时,将表格B带到前面


但是,您遇到的问题可以不用代码解决。

表格A是表格B的子表格吗?我不知道你是否想要B模式,或者MDI子模式是否有效。不,这不是子模式,也不是这样做的方式。所以你总是希望B在a前面,但你想在a有焦点时与a互动?老实说,我不想与这些形式中的任何一种互动,只是B总是在A前面。问题是用户可能会无意中点击其中一个。我可以使用Enable=false,但是我听到了这个恼人的叮当声。啊,请不要告诉我任何关于糟糕的UI设计的事情,这正是我的客户想要的。你能在B而不是A上发送Form.TopMost属性吗?