Скажем так, у меня есть много элементов управления в моей форме, и когда пользователь нажимает на один из них, его высота увеличивается. Это означает, что в настоящее время, когда этот элемент управления clicked расширяется, другие элементы управления под ним будут перекрываться расширенным элементом управления.
Но я хочу, чтобы каждый элемент управления под расширенным элементом управления скользил вниз, чтобы они снова находились под расширенным элементом управления.
Я знаю, как справляться со скольжением, но я просто не знаю, как сделать каждый элемент управления, кроме одного, каждый раз, когда перемещается данный элемент управления.
Любая помощь очень ценится, спасибо!
Это то, о чем я думал:
void newOrderReceived(object sender, EventArgs e)
{
foreach(Control OrderNotificationBox in OrdersPanel.Controls)
{
if(OrderNotificationBox is NotificationBox) // Checks to see if the control is a NotificationBox
{
// Add my code to slide controls down.
}
}
}
Но ... Как узнать, находится ли элемент управления на ниже расширенного элемента управления?
Так мне следует изменить расположение всех элементов управления под расширенным элементом управления?
Редактировать: Просто подумал, чтобы проверить, не находится ли NotificationBox ниже расширенного NotificationBox, см. Пересмотренный код ниже:
void newOrderReceived(object sender, EventArgs e)
{
foreach(Control OrderNotificationBox in OrdersPanel.Controls)
{
if(OrderNotificationBox is NotificationBox) // Checks to see if the control is a NotificationBox
{
if(OrderNotificationBox.Location.Y <= ExpandedNotificationBox.Location.Y + ExpandedNotificationBox.Size.Width)
{
// Add my code to slide controls down.
}
}
}
}
Но будет ли этого достаточно? В настоящее время это работает, так что, я думаю, я просто ответил на свой вопрос. Но разве нет лучшего способа сделать это? Более элегантный / эффективный способ?
Вот пример того, как это должно выглядеть: