为什么自动调整大小不会在没有滚动条的情况下将FlowLayoutPanel调整为相应的大小

时间:2016-05-24 14:52:16

标签: .net winforms autosize flowlayoutpanel

我尝试通过代码将一些UserControls添加到System.Windows.Forms.FlowLayoutPanel(。net 4.0) 我已将.AutoSizeWrapContents -Property设置为True。 我希望将每个控件放在一个新的' Row'。

在我的测试表格中,我有足够的空间来添加MyUserControl的多个实例 问题是:

  

对于我添加的每个第二个控件,两个滚动条都出现在   FlowLayoutPanel的。

一步一步:

  1. 使用大量空白空间启动应用程序...(设计模式显示flowlayoutpanel大小) - 但几乎相同;)

    enter image description here

  2. 添加第一个控件:
    red区域是flowlayoutcontrol,blue区域是我的用户控件。

    2nd step - adding 1rst control

  3. 添加第二个控件最终会出现在包含滚动条的flowlayout中(因为我不想要)

    Scrollbars every 2nd control

  4. 添加另一个控件正确调整flowlayout面板的大小(如我所愿)

    Correct size after 2nd item (every 2nd)

  5. 我可以更进一步。重复同样的问题。

    以下是我的代码部分:

    主要表单ctr

    PanelToUse.AutoSizeMode = AutoSizeMode.GrowAndShrink;
    PanelToUse.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;  
    PanelToUse.BackColor = System.Drawing.Color.Red;                           
    PanelToUse.AutoSize = true;
    

    ADD - 按钮后面

     var myNewBlueControl = new MyUserControl1();
     myNewBlueControl.Visible = true;
     this.PanelToUse.Controls.Add(myNewBlueControl);
    

    有用的建议吗?我想念什么?
    在此先感谢!!

    修改 以下是重现此问题的所有代码部分:

    创建一个新的WindowsForms-Project。

    • 添加新的UserControl并将此类重命名为"MyUserControl1"
    • 在MyUserControl1-Ctr中添加以下代码:

      this.Size = new Size(410, 100); this.BackColor = Color.Blue;

    • 将以下成员添加到Form1-Class:

      FlowLayoutPanel panelToUse;

    • 将此代码添加到Form1-Constructor

              this.Size = new Size(1046, 367);
              this.MaximumSize = new Size(550, 700);
      
              panelToUse = new FlowLayoutPanel();
              this.Controls.Add(this.panelToUse);
              panelToUse.WrapContents = true;
              panelToUse.Location = new Point(10, 10);
              panelToUse.AutoSizeMode = AutoSizeMode.GrowAndShrink;
              panelToUse.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
              panelToUse.BackColor = System.Drawing.Color.Red;
              panelToUse.AutoSize = true;
              panelToUse.AutoScroll = true;
              panelToUse.Visible = true;
      
    • 然后在右上角添加new Button并将其锚点设置为 Bottom, Right

    • add-button的click-eventhandler中插入此代码:

      var myNewBlueControl = new MyUserControl1(); myNewBlueControl.Visible = true; this.panelToUse.Controls.Add(myNewBlueControl);

0 个答案:

没有答案