我只是将两个网格放在一起.鉴于世界上的一个状态,我希望网格A位于顶部,给定另一个世界状态,我希望网格B位于顶部.在过去,我们可以调用grid.BringToFront(),但这不再存在,我无法找到任何方法来实现这一点.
我能想到的最好的,我需要创建自己的自定义类来允许这个功能,但这似乎是过去非常简单的过度杀手.
您可以使用Panel.ZIndex属性更改面板中元素的显示顺序
您必须使用Z索引属性,并且因为没有内置函数可以执行您想要的操作,所以我做了自己的事情。Z值越高,控件越靠近“ Z”。因此,您希望将控件放在顶部而不必设置任意高Z值。
因此,这是我为自己编写的一个小功能,正是为了实现这一功能。注意:这假定您使用的是Canvas和UserControls。因此,如果不是您的情况,则可能需要稍作调整。
基本上,它将获得要移动的控件的索引,然后当前位于其上方的任何控件将下降1,然后将要移动的控件放在顶部(以保持层次结构)。
static public void BringToFront(Canvas pParent, UserControl pToMove) { try { int currentIndex = Canvas.GetZIndex(pToMove); int zIndex = 0; int maxZ = 0; UserControl child; for (int i = 0; i < pParent.Children.Count; i++) { if (pParent.Children[i] is UserControl && pParent.Children[i] != pToMove) { child = pParent.Children[i] as UserControl; zIndex = Canvas.GetZIndex(child); maxZ = Math.Max(maxZ, zIndex); if (zIndex > currentIndex) { Canvas.SetZIndex(child, zIndex - 1); } } } Canvas.SetZIndex(pToMove, maxZ); } catch (Exception ex) { } }