c#在FlowLayoutPanel上指定按钮自定义位置
我有一个c#在FlowLayoutPanel上指定按钮自定义位置,c#,winforms,flowlayoutpanel,C#,Winforms,Flowlayoutpanel,我有一个FlowLayoutPanel,上面有一些垂直排列的按钮(面板按照我想要的方式自动排列)。但是现在我想放置另一个带有自定义位置的按钮1(位于FlowLayoutPanel的右上角)。到目前为止,我尝试了button1.Location=新点(x,y)但按钮1仍按顺序排列。你能帮助我吗?谢谢如果要将控件放置在所需位置,则使用的容器不正确FlowLayouPanel顾名思义,它以流的方式排列其子级 使用简单的面板或创建一个自定义面板 要回答您的另一个问题:要垂直放置按钮,您可以这样做 Poi
FlowLayoutPanel
,上面有一些垂直排列的按钮(面板按照我想要的方式自动排列)。但是现在我想放置另一个带有自定义位置的按钮1
(位于FlowLayoutPanel
的右上角)。到目前为止,我尝试了button1.Location=新点(x,y)代码>但按钮1
仍按顺序排列。你能帮助我吗?谢谢如果要将控件放置在所需位置,则使用的容器不正确FlowLayouPanel
顾名思义,它以流的方式排列其子级
使用简单的面板
或创建一个自定义面板
要回答您的另一个问题:要垂直放置按钮,您可以这样做
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);
}
}
公共类MyFlowLayoutPanel:FlowLayoutPanel
{
受保护的覆盖仅限无效布局(LayoutEventArgs-levent)
{
基础。仅限布局(levent);
var button=flowLayout.Controls.OfType().FirstOrDefault();
如果(按钮!=null)
button.Location=新点(flowLayout.Width-button.Width,0);
}
}
非常感谢。你能告诉我如何在一个简单的面板上垂直排列按钮吗?这将使我的生活更轻松。@user3677210您可以将设置为。它会像这样工作。@famousgarkin再次阅读了这个问题,我想OP知道,问题是OP需要在自定义位置添加一个按钮。这就是我所理解的。@SriramSakthivel同意,如果它仍然与您给出答案的自定义位置有关。以下是我的FLPanel的外观:我希望按钮(不是单选按钮)位于右上角,而不是左上角。谢谢