Вы должны использовать свойство индекса 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)
{
}
}