У меня есть FlowLayoutPanel
на котором у меня есть Buttons
упорядоченные по вертикали (панель автоматически упорядочивается так, как я хотел). Но теперь я хочу разместить другую button1
но с пользовательским расположением (в верхнем правом углу FlowLayoutPanel
). Пока я попробовал button1.Location = new Point(x,y);
но button1
все еще упорядочена. Вы можете мне помочь? благодаря
Если вы хотите поместить элемент управления в нужное место, вы используете неправильный контейнер. 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);
}
}
FlowLayoutPanel.FlowDirection
вTopDown
. Это будет работать так: dotnetperls.com/flow.png .