我尝试通过代码将一些UserControls
添加到System.Windows.Forms.FlowLayoutPanel
(。net 4.0)
我已将.AutoSize
和WrapContents
-Property设置为True
。
我希望将每个控件放在一个新的' Row'。
在我的测试表格中,我有足够的空间来添加MyUserControl
的多个实例
问题是:
对于我添加的每个第二个控件,两个滚动条都出现在 FlowLayoutPanel的。
一步一步:
使用大量空白空间启动应用程序...(设计模式显示flowlayoutpanel大小) - 但几乎相同;)
添加第一个控件:
red
区域是flowlayoutcontrol,blue
区域是我的用户控件。
添加第二个控件最终会出现在包含滚动条的flowlayout中(因为我不想要)
添加另一个控件正确调整flowlayout面板的大小(如我所愿)
我可以更进一步。重复同样的问题。
以下是我的代码部分:
主要表单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);