我有一个UserControl,它添加了其他UserControls,但我希望添加的“最新”控件是最顶层的,所以它高于其他控件。因为控件应该相互重叠。像纸牌游戏。所以我添加了5个控件,第一个应该具有最低优先级,最优先级 - 最明显。
有什么想法吗?
或者我是否必须覆盖“容器”控件的Paint方法?和Control.CreateGraphics()并绘制它?
答案 0 :(得分:1)
添加新控件时只需使用userControl1.BringToFront()
。
但请注意,这不会阻止用户“标记”到其下方的控件中。为此,您需要禁用或使其他控件不可见。
答案 1 :(得分:1)
考虑Control类的BringToFront和SendToBack方法。 查看这些问题的答案
答案 2 :(得分:0)
在Windows窗体中,控件添加到其父窗体控件集合的顺序决定了它们的渲染顺序。
这意味着要么在代码中处理子控件的添加并使用适当的插入位置,要么在设计器中移动控件(不幸的是,这通常意味着对* .Designer.cs文件进行危险的手工编辑)。
我建议您选择第一种方法,这是大型WinForms项目唯一可行的方法,并在您的代码中使控件插入逻辑显式化。顺便说一句,好消息是没有必要修改绘图处理程序,因此您对使用CreateGraphics()这样的黑客行为的担心是不合理的并且被驱散:)