C# 使控件显示在其父控件的顶部

C# 使控件显示在其父控件的顶部,c#,forms,C#,Forms,我需要以下问题的帮助: 我有一个面板,里面放了一个组合框和另一个面板。我想要的是在父面板的顶部显示子面板,就像组合框在父面板的顶部显示其项目一样。有什么办法可以做到这一点吗 组合框是复合控件。它的弹出部分实际上是一个弹出窗口(类似于菜单)。它甚至可以超出你的身体范围 在您的屏幕截图上:子面板是父面板的子面板,因此它将根据父边界(或者确切地说,根据父客户端区域边界)自动修剪 要跳出父面板,子面板应该是父面板父面板的子面板(例如,表单),然后,假设子面板的z顺序更大(使用SendToFront())

我需要以下问题的帮助: 我有一个面板,里面放了一个组合框和另一个面板。我想要的是在父面板的顶部显示子面板,就像组合框在父面板的顶部显示其项目一样。有什么办法可以做到这一点吗


组合框是复合控件。它的弹出部分实际上是一个弹出窗口(类似于菜单)。它甚至可以超出你的身体范围

在您的屏幕截图上:子面板是父面板的子面板,因此它将根据父边界(或者确切地说,根据父客户端区域边界)自动修剪

要跳出父面板,子面板应该是父面板父面板的子面板(例如,表单),然后,假设子面板的z顺序更大(使用
SendToFront()
),它将被绘制在父面板上,并可以上升到其父面板边界的边界

通过将子控件从父
控件
集合中删除,并将其添加到其他父集合中,重新计算新的
位置
(使用
PointToScreen()
->
PointToClient()
组合,甚至可能有一种方法可用于此操作),可以取消子控件


如果您认为超出表单边界更像combobox,那么您需要将其实现为弹出窗口(例如,请参见)。

您尝试过吗?您的意思是子面板更长,应该显示在另一个面板上吗?在这种情况下,它应该被添加到主面板的父面板(表单?)中,并以正确的Z顺序放置(BringToFront)@huMptyduMpty yes,这不会改变任何内容。@mrida,这是因为面板是它应该显示的面板的子面板。控件不能显示在其父控件的边界之外。如果您将溢出面板移到表单上,然后调用bringtofront,您可以根据需要定位它(只要它不在表单的边界之外)。是的,单击下拉列表时,它会显示一个单独的表单。当点击另一个片段时自动消失的片段获得焦点,因此它不必担心与其父片段保持位置。