c#在FlowLayoutPanel上分配一个按钮的自定义位置
本文关键字:一个 按钮 位置 自定义 FlowLayoutPanel 分配 | 更新日期: 2023-09-27 18:05:08
我有一个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);
}
}