在面板中查找最顶层(z顺序)控件

时间:2013-03-05 13:04:34

标签: vb.net winforms user-interface

看我的情况是,

我在forms (toplevel=false)内打开了多个panel。在运行时期间,forms内部panel打开的所有dock filled都将是brought to frontform。在这种情况下我需要的是,如何在panel上选择最顶层的控件(form)。最重要的控制意味着控制(z-order)具有更大的 panel.controls(0)

我目前正在假设使用此代码,

{{1}}

任何机构都可以告诉我,上面的代码片段是正确的还是dot net中可用的任何替代语法来实现这一点。?

2 个答案:

答案 0 :(得分:5)

根据MSDN

  

索引值为零的控件位于z顺序的顶部,较高的数字更接近底部。

因此,我会说你的假​​设是正确的。 Controls(0)始终是最顶级的控件。唯一需要关注的是它是否可见。

答案 1 :(得分:1)

我没有看到任何其他循环遍历每个Control的解决方案,看看最顶层的是什么。 类似的东西:

Dim TopMostControl As Control = panel.Controls(0) 'Check if there are any control
For Each Control As Control In panel.Controls
    If panel.Controls.GetChildIndex(Control) < panel.Controls.GetChildIndex(TopMostControl) Then
        TopMostControl = Control
    End If
Next