【发布时间】:2013-04-16 09:26:50
【问题描述】:
是否可以让一个控件 (Panel) 始终覆盖所有其他控件,即使它们也使用 Control.BringToFront()?
我已经厌倦了使用BringToFront 本身,但是如果此控件下的另一个控件也使用此命令,这似乎失去了它的有效性。
【问题讨论】:
-
没有。奇怪的是在你的程序中有这样不守规矩的控制。
是否可以让一个控件 (Panel) 始终覆盖所有其他控件,即使它们也使用 Control.BringToFront()?
我已经厌倦了使用BringToFront 本身,但是如果此控件下的另一个控件也使用此命令,这似乎失去了它的有效性。
【问题讨论】:
如果您尝试解释您要达到的目标,这将有所帮助。然后我们可能能够更好地说服你,你做错了什么:)
不管怎样,不管你做了什么诡计,其他控件都可能使用同样的诡计来覆盖你。
您可以领先一步,例如通过处理父控件的Layout 事件来强制您的控件回到前面。 Layout 事件在子控件的 Z 顺序更改时触发(以及其他)。
private void Form1_Layout(object sender, LayoutEventArgs e)
{
panel1.BringToFront();
}
【讨论】:
处理这个问题的一个肮脏方法是设置一个计时器,每次它滴答作响时使用控件上的 .BringToFront() 方法,您还可以添加多个您希望执行此操作的控件,并可以按照您喜欢的方式排列它们。
【讨论】: