c#在FlowLayoutPanel上分配一个按钮的自定义位置

本文关键字:一个 按钮 位置 自定义 FlowLayoutPanel 分配 | 更新日期: 2023-09-27 18:05:08

我有一个FlowLayoutPanel,我有一些Buttons垂直订购(面板自动订购只是我想要的方式)。但现在我想放置另一个button1,但有一个自定义位置(在FlowLayoutPanel的右上角)。到目前为止,我尝试了button1.Location = new Point(x,y);,但button1仍然按顺序放置。你能帮我吗?由于

c#在FlowLayoutPanel上分配一个按钮的自定义位置

如果你想把一个控件放置在你想要的位置,你使用了一个错误的容器。顾名思义,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);
    }
}