c # назначить кнопку пользовательское расположение на FlowLayoutPanel

1

У меня есть FlowLayoutPanel на котором у меня есть Buttons упорядоченные по вертикали (панель автоматически упорядочивается так, как я хотел). Но теперь я хочу разместить другую button1 но с пользовательским расположением (в верхнем правом углу FlowLayoutPanel). Пока я попробовал button1.Location = new Point(x,y); но button1 все еще упорядочена. Вы можете мне помочь? благодаря

Теги:
winforms
flowlayoutpanel

1 ответ

1
Лучший ответ

Если вы хотите поместить элемент управления в нужное место, вы используете неправильный контейнер. FlowLayouPanel как имя предполагает, что он упорядочивает своих детей потоком.

Либо используйте простую Panel либо создайте пользовательский LayoutEngine.

Чтобы ответить на другой вопрос: для вертикальной установки кнопок вы можете это сделать.

Point location = Point.Empty;
foreach (Button button in buttons)
{
    button.Location = location;
    location.Y += button.Height;
    location.Y += 10;//Add some space
}

Другой подход - использовать потомок FlowLayoutPanel и переопределить метод OnLayout следующим образом.

public class MyFlowLayoutPanel : FlowLayoutPanel
{
    protected override void OnLayout(LayoutEventArgs levent)
    {
        base.OnLayout(levent);

        var button = flowLayout.Controls.OfType<Button>().FirstOrDefault();
        if (button != null)
            button.Location = new Point(flowLayout.Width - button.Width, 0);
    }
}
  • 0
    Большое спасибо. Можете ли вы сказать мне, как разместить мои кнопки в вертикальном порядке на простой панели? Это сделало бы мою жизнь намного проще.
  • 0
    @ user3677210 Вы можете установить FlowLayoutPanel.FlowDirection в TopDown . Это будет работать так: dotnetperls.com/flow.png .
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню