是否可以使FlowLayoutPanel中的插入项自动调整为FlowLayoutPanel?这是一个例子:
包含1个FlowLayoutPanel和3个按钮的表单:
如果我调整表单大小,控件看起来像这样:他们安排“从左到右”
我想要的是:控件应该具有FlowLayoutPanel的宽度:
任何想法如何做到这一点?我更改了FlowDirection并使用了Anchor属性,但没有运气。
我当然可以调整FlowLayoutPanel_Resize事件中的控件,但我想添加大约500个用户控件 - 我测试了它并且速度很慢。
答案 0 :(得分:37)
我建议你在这种情况下使用TableLayoutPanel和一列。我发现TableLayoutPanel比FlowLayoutPanel更可预测和更可靠。
如果您仍想使用FlowLayoutPanel,另一个选项是将第一个控件宽度设置为所需的控件宽度,并将Dock = Top用于所有其他控件。
答案 1 :(得分:18)
这是一种简单的方法。 只需绑定flowLayoutPanel的SizeChanged事件并调整包含控件的大小。 像:
private void myFlowLayoutPannel_SizeChanged(object sender, EventArgs e)
{
myFlowLayoutPannel.SuspendLayout();
foreach (Control ctrl in pnSMS.Controls)
{
if (ctrl is Button) ctrl.Width = pnSMS.ClientSize.Width;
}
myFlowLayoutPannel.ResumeLayout();
}
答案 2 :(得分:6)
这里我有StackPanel类:
result= np.append(c, [a], axis=0)
答案 3 :(得分:2)
我建议...尝试使用按钮的锚点...尝试将其设置为
Button1.Anchor = (AnchoreStyle.Left or AnchoreStyle.Right)
或 在属性中设置它......
然后将其放在Panel而不是FlowLayoutPanel ...;)
答案 4 :(得分:2)
FlowLayoutPanel
根据MSDN
...对于垂直流向,FlowLayoutPanel控件计算 从最宽的子控件中隐含的列的宽度 柱即可。此列中包含锚点或 Dock 的所有其他控件 对齐或拉伸属性以适合此隐含列。该 对于水平流向,行为的作用方式类似。
它不理想,但只要一个子控件设置为与容器相同的宽度,并且其余控件设置为Dock
,就可以本机执行此操作。
答案 5 :(得分:1)
这里不需要FlowLayoutPanel
。
您应该能够使用常规的Panel
控件执行所需的操作。
将其固定在所有四个侧面上,以使其与您的窗体一起伸展,然后添加按钮并将其全部设置为Dock:Top。
完成工作。
答案 6 :(得分:0)
正如其他答案所述,面板本身足以处理您的按钮。对我有用的一些代码:
public class ButtonWindow : Panel
{
public ButtonWindow()
{
Dock = DockStyle.Fill;
AutoScroll = true;
for (int i = 0; i < 500; i++)
{
Button button = new Button() { Height = 100, Dock = DockStyle.Top };
Controls.Add(button);
}
}
}
今天愉快。