winform中的“Z-Index”

时间:2010-04-14 22:08:33

标签: vb.net winforms

在CSS中,我们有一个名为z-index的属性,在面板控件的Winfrom中为“Z-Index?

提供的是什么?

1 个答案:

答案 0 :(得分:15)

WinForms具有z顺序,但您无法将其作为数字访问。相反,每个控件都有BringToFront方法和SendToBack方法,它们分别将控件移动到z顺序的顶部或底部。

虽然您很少遇到BringToFront或SendToBack无法提供所需内容的情况,但不确定为何会以这种方式曝光。

更新:我错了,您可以通过控件容器的Controls集合中的方法直接访问z顺序。这是一个包装它的简单方法:

public void SetControlZOrder(Control ctrl, int z)
{
    ctrl.Parent.Controls.SetChildIndex(ctrl, z);
}

我猜他们将它封装在BringToFrontSendToBack中只是为了让一切都简单易用。我鼓掌。

更新2:我在这里将您的评论解释为另一个答案意味着您希望能够获取面板内部并且大于面板的控件(以便它的一部分)隐藏)并使控件位于面板前面并且大于它(这样你就可以看到整个控件)。

您可以通过从面板中移除控件,将其位置移动到原始面板的位置,然后将其添加到表单的控件中来执行此操作:

panel1.Controls.Remove(button1);
button1.Left += panel1.Left;
button1.Top += panel1.Top; 
this.Controls.Add(button1);

左侧和顶部位移是必要的,因为按钮的位置最初是相对于面板的,现在将相对于表单。移位将其保持在原始虚拟位置,因此它似乎从面板中出来。

然后你必须处理将它放回面板中,这只是上面代码的反面。