【问题标题】:Multi-Row Autosize Scrollable FlowLayoutPanel多行 Autosize 可滚动 FlowLayoutPanel
【发布时间】:2016-08-03 14:28:51
【问题描述】:

我有 50 张图片。我需要在FlowLayoutPanel 中添加这些图像,在该换行行之后的第一行添加 30 个图像,在第二行添加 20 个图像。所以我还需要在控件上显示滚动条。

我将视频分成帧(图像)并显示在FlowLayoutPanel。当我上传第一个视频时,下面是设置图像的代码:

for (i = 1; i < len - 1; i++)
{
    ImagePanel mybt = new ImagePanel(storagePath + words[0] + "_" + 
                                     i + ".jpg", words[0] + "_" + i + ".jpg");
    flowLayoutPanel1.Controls.Add(mybt);
}

之后,当我上传第二张图片时,我想在第一行显示图像,我们在休息后有第一张视频图像,我需要显示第二张视频上传图像。 如果有人知道这怎么可能。

【问题讨论】:

  • @RezaAghaei 就像我在 ImagePanel 中有 50 张图像我需要在 flowlayooutpanel 中添加这些图像 30 张图像用于第一行,第二行 20 张图像。
  • 你可以使用SetFlowBreak:
  • @RezaAghaei 我用过这个,但没有成功,请参考我的演示链接,以便我查看演示。

标签: c# winforms flowlayoutpanel


【解决方案1】:

要获得如您在屏幕截图中看到的结果:

  • FlowLayoutPanel 放入Panel 中,并将AutoScroll 属性设置为true
  • FlowLayoutPanelAutoSize 属性设置为true
  • FlowLayoutPanelWrapContent 属性设置为true(默认)
  • FlowLayoutPanelAutoScroll 属性设置为false(默认)
  • 添加控件时,您可以使用SetFlowBreak 为您需要的控件中断流。

截图

代码

private void button1_Click(object sender, EventArgs e)
{
    for (int i = 0; i < 20; i++)
    {
        var btn = new Button() { Text = i.ToString() };
        if (i == 5 || i==15 )
            this.flowLayoutPanel1.SetFlowBreak(btn, true);
        this.flowLayoutPanel1.Controls.Add(btn);
    }
}

我在 5 点和 15 点打破了流程。

【讨论】:

  • 它没有破坏流程我忘了告诉你我的 flowLayoutPanel 有 autoscroll 属性 false 并且 wrap content false
  • @vishuminhas 没问题,检查更新;使用一个面板,其自动滚动属性设置为 true,并且您的 flowlayoutpanel 自动调整为 true,(wrapcoontent = true 和 autoscroll=false 默认值)
  • 谢谢,您现在知道我们如何为此添加 Hscroll 和 Vscroll 了吗?
  • @vishuminhas 不客气 :) 因为托管您的PanelFlowLayoutPanel 是自动大小,所以滚动条将在需要时自动显示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-31
  • 2011-01-15
  • 2016-06-12
  • 1970-01-01
相关资源
最近更新 更多