【问题标题】:FlowLayoutPanel AutoSize only in vertical?FlowLayoutPanel AutoSize 仅在垂直方向?
【发布时间】:2013-04-08 13:32:08
【问题描述】:

我正在FlowLayoutPanel 中动态加载图像。我需要让这个面板自动调整大小,但只能垂直调整。

这可能吗?如果可以,我该如何实现?

【问题讨论】:

  • 有可能吗?你试过了吗?
  • 我只从 flowLayoutPanel = true 设置 AutoSize 属性;但面板水平增加
  • 将您添加的控件的 FlowBreak 属性设置为 True。如果您在代码中添加它们,则使用面板的 SetFlowBreak() 方法。
  • 您可能还对这个处理 FlowLayoutPanel 中图片缩放的问题感兴趣:stackoverflow.com/questions/15930182/…

标签: c# winforms visual-studio


【解决方案1】:

也许

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

会帮助你。

【讨论】:

    【解决方案2】:

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

    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

    【讨论】:

    • 这会以垂直方式添加控件,但是列表现在比我的面板大,并且我的滚动条不见了,我该如何找回它?
    • @Giancarlo 您的滚动条未显示可能有多种原因。所有这些都是设置每行的控件数量。我建议做一些进一步的研究和修补,如果你仍然在努力提出一个新问题。
    【解决方案3】:

    我确实从面板中设置了大小。示例:

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

    它对我有用。谢谢大家

    【讨论】:

    • int newHeight= listImages.Count/10 * 100; 等同于 int newHeight= listImages.Count * 10;
    • 我知道,但是 int newHeight= listImages.Count/10 * 100;最好理解 10 是每行图片的数量,100 是每行的高度
    • 提示:它甚至会更具可读性和可维护性:int newHeight= listImages.Count / numberOfPicturesPerLine * pictureHeight,定义如const int numberOfPicturesPerLine = 10;
    【解决方案4】:

    这可能看起来像一个丑陋的解决方案,但它对我有用:

    1. 将面板的当前宽度存储在变量中;
    2. 将 AutoSize 模式设置为 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);
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多