我有一个添加其他用户控件的用户控件,但我希望添加的“最新”控件位于最顶层,因此它高于其他控件。因为控件应该相互重叠。就像纸牌游戏一样。所以我添加了 5 个控件,第一个控件的优先级最低,最新的优先级最高 - 最明显。
有任何想法吗?
或者我是否必须覆盖“容器”控件的 Paint 方法?和 Control.CreateGraphics() 并绘制它?
我有一个添加其他用户控件的用户控件,但我希望添加的“最新”控件位于最顶层,因此它高于其他控件。因为控件应该相互重叠。就像纸牌游戏一样。所以我添加了 5 个控件,第一个控件的优先级最低,最新的优先级最高 - 最明显。
有任何想法吗?
或者我是否必须覆盖“容器”控件的 Paint 方法?和 Control.CreateGraphics() 并绘制它?
只需userControl1.BringToFront()
在添加新控件时使用。
但是请注意,这不会阻止用户“切换”到其下方的控件。为此,您需要禁用或使其他控件不可见。
在 Windows 窗体中,控件添加到其父控件集合的顺序决定了它们的呈现顺序。
这意味着您要么在代码中处理添加子控件并使用适当的插入位置,要么在设计器中移动控件(不幸的是,这通常意味着对 *.Designer.cs 文件进行危险的手动编辑)。
我建议您采用第一种方法,这对于较大的 WinForms 项目来说是唯一可行的方法,并在您的代码中明确控制插入逻辑。顺便说一句,好消息是无需修补绘画处理程序,因此您对使用 CreateGraphics() 之类的黑客行为的担忧是不合理的,并且可以消除 :)