1

我有一个添加其他用户控件的用户控件,但我希望添加的“最新”控件位于最顶层,因此它高于其他控件。因为控件应该相互重叠。就像纸牌游戏一样。所以我添加了 5 个控件,第一个控件的优先级最低,最新的优先级最高 - 最明显。

有任何想法吗?

或者我是否必须覆盖“容器”控件的 Paint 方法?和 Control.CreateGraphics() 并绘制它?

4

3 回答 3

2

考虑 Control 类的 BringToFront 和 SendToBack 方法。也查看这些问题的答案

如何使用 WinForms 设置控件的 Z 顺序

将 Winforms 控件置于最前面

于 2012-05-28T14:57:33.347 回答
1

只需userControl1.BringToFront()在添加新控件时使用。

但是请注意,这不会阻止用户“切换”到其下方的控件。为此,您需要禁用或使其他控件不可见。

于 2012-05-28T14:57:28.017 回答
0

在 Windows 窗体中,控件添加到其父控件集合的顺序决定了它们的呈现顺序。

这意味着您要么在代码中处理添加子控件并使用适当的插入位置,要么在设计器中移动控件(不幸的是,这通常意味着对 *.Designer.cs 文件进行危险的手动编辑)。

我建议您采用第一种方法,这对于较大的 WinForms 项目来说是唯一可行的方法,并在您的代码中明确控制插入逻辑。顺便说一句,好消息是无需修补绘画处理程序,因此您对使用 CreateGraphics() 之类的黑客行为的担忧是不合理的,并且可以消除 :)

于 2012-05-28T14:58:05.397 回答