Vb.net &引用;Z指数;以winforms

Vb.net &引用;Z指数;以winforms,vb.net,winforms,Vb.net,Winforms,在CSS中,我们有一个名为z-index的属性,在Winfrom中,对于面板控件到“Z-Index?WinForms有一个Z顺序,但不能作为数字访问。相反,每个控件都有一个BringToFront方法和一个SendToBack方法,分别将控件移动到z顺序的顶部或底部 不清楚它为什么以这种方式公开,尽管您很少遇到BringToFront或SendToBack都不能提供所需内容的情况 更新:我错了,您可以通过控件容器的控件的集合上的方法直接访问z顺序。下面是一个简单的包装方法: public voi

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

WinForms有一个Z顺序,但不能作为数字访问。相反,每个控件都有一个
BringToFront
方法和一个
SendToBack
方法,分别将控件移动到z顺序的顶部或底部

不清楚它为什么以这种方式公开,尽管您很少遇到BringToFront或SendToBack都不能提供所需内容的情况

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

public void SetControlZOrder(Control ctrl, int z)
{
    ctrl.Parent.Controls.SetChildIndex(ctrl, z);
}
我猜他们将其封装在
BringToFront
SendToBack
中,只是为了让一切都简单易用。我鼓掌

更新2:我将您的评论解释为一个不同的答案,意思是您希望能够获取一个位于面板内部且大于面板的控件(因此部分被隐藏),并使其位于面板前面且大于面板(以便您看到整个控件)

可以通过从面板中删除控件、按原始面板的位置移动控件的位置并将其添加到窗体控件中来执行此操作:

panel1.Controls.Remove(button1);
button1.Left += panel1.Left;
button1.Top += panel1.Top; 
this.Controls.Add(button1);
左移和上移是必要的,因为按钮的位置最初是相对于面板的,现在将是相对于窗体的。移位将其保持在原始虚拟位置,因此它看起来像是从面板中出来的


然后,您必须将其放回面板中,这与上述代码正好相反。

@sv88erik:我删除了我的答案,因为这一个更好,但下面是您对它的评论:
“问题是,面板内的控件显示的大小不超过面板的大小。我这样做是为了,当你点击面板内的控件时,它会变大,而面板的大小则会变小。。。。“
。我确信您想要做的是可能的,但我不确定正确的方法。一个选项可能是将所有控件都设置为表单的子控件(control.Parent=theForm)。然后它们将彼此重叠。