FlowLayoutPanel仅在垂直方向上自动调整大小?

时间:2013-04-08 13:32:09

标签: c# winforms visual-studio

我正在FlowLayoutPanel内动态加载图片。我需要这个面板自动调整尺寸,但只能垂直调整。

这是可能的,如果是这样,我该如何实现呢?

5 个答案:

答案 0 :(得分:11)

简单,添加一个类型控件添加的事件:

private void flowLayoutPanel1_ControlAdded(object sender, ControlEventArgs e)
{
    if (flowLayoutPanel1.Controls.Count % 10 == 0)
        flowLayoutPanel1.SetFlowBreak(e.Control as Control, true);
}

设置AutoSize = true

设置flowdirection = LeftToRight

答案 1 :(得分:1)

我确实动态地设置了“面板大小”。例如:

int newHeight= listImages.Count/10 * 100;
               flowLayoutPanel1.Size = new Size(1143, newHeight);

它对我有用。全部

答案 2 :(得分:0)

这可能看起来很丑陋,但是对我有用:

  1. 以变量形式存储面板的当前宽度;
  2. 将“自动调整大小”模式设置为true;
  3. 执行需要调整面板大小的操作;
  4. 从变量中恢复前面板的宽度。

                int i = _panel1.Width;
                _panel1.AutoSize = true;
                _panel1.AutoSizeMode = AutoSizeMode.GrowOnly;
                /*some action going on here*/
                _panel1.AutoSize = false;
                _panel1.Size = new Size(_panel1.Width, 80);
    

答案 3 :(得分:0)

也许

FlowLayoutPanel1.WrapContents = False;
FlowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;

将为您提供帮助。

答案 4 :(得分:0)

仅自动调整高度:

  1. 将 AutoSize 设置为 True
  2. 将 AutoSize 设置为 False
  3. 设置宽度
label.AutoSize = true;
label.AutoSize = false;
label.Width = width;