如何判断Windows窗体是否已打开但是在另一个窗口后面?

Joh*_*ith 5 .net c# .net-2.0 winforms form-control

无论表单是最大化,最小化还是FormWindowState为Normal,调用Form.Visible都将返回true.

我想知道的是如何判断表单是否打开但是隐藏在另一个应用程序窗口后面.

如果是这种情况,我想把它带到前面,实际上让用户可以看到它.

我尝试了BringToFront()方法,但它没有用.我也试过调用Show()方法但是如果表单在另一个应用程序的窗口后面,它仍然是那样.

我发现问题的唯一解决方法是将Form的FormWindowState设置为Minimized/Maximized然后正常,但这有点像黑客并且看起来不太好.

有人能告诉我如何判断表格是否在另一个窗口后面以及如何将其带到前面?

JCl*_*ill 6

奇怪.

this.Activate() 应该做的伎俩.

你可以尝试一种'可怕的黑客方法',我感到内疚.但如果this.Activate()不起作用,为了测试你可能会尝试:

this.TopMost = true;
this.Focus();
this.BringToFront();
this.TopMost = false;
Run Code Online (Sandbox Code Playgroud)

我从未将此推荐作为解决方案推荐,但它可能会向您展示功能.this.Activate()如果上面提到的代码确实如此,我会更关心为什么不工作.

至于检测窗口,你不能使用命令通过C#来检测它.有关详细信息,请查看以下问题的答案: 如何检查窗体是否在Windows窗体中真正可见?