Вы должны использовать свойство индекса 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)
{
}
}
вопрос был не в изменении порядка, а в том, чтобы вывести на передний план, что, безусловно, состоит в создании существующего maxOrder и установке большего, чем этот порядок ... – serhio