无法访问超出高窗体底部边界的控件部分

时间:2015-07-11 19:52:31

标签: c# winforms

我的表单的高度设置为780,这是允许的最大限制。 我在表格中添加了一个超出表格范围的小组。设计器模式允许我只滚动到窗体的底部,但不滚动到面板的底部。

由于这个原因,我无法将控件拖放到Panel的底部。

查看以黄色突出显示的图像部分:

enter image description here

3 个答案:

答案 0 :(得分:1)

Form的最大高度通常与屏幕的当前分辨率相关联,因此预期的行为是无法访问部分位于Form底部的控件。< / p>

解决此问题的一种方法是在设计器中将AutoScroll的{​​{1}}属性设置为Form,这样您就可以向下滚动并访问整个True },在设计器中或运行时将其设置回Panel

在下面的屏幕截图中,您可以看到两个垂直滚动条。最右边的那个允许您上下滚动整个表单,但不允许您访问Panel的其余部分。它左侧的那个将向上和向下滚动表单的内容,并允许您访问该面板。

enter image description here

或者向上移动False,在其中完成您需要做的工作,然后再次在设计时或运行时将其移回原位。

答案 1 :(得分:1)

如果要向表单添加控件并且需要的空间超过允许的最大值,则不能使用[Import] // MEF is able to inject it even tho it's set accessor is protected IMyDependencie MyDependency { get; protected set; } 执行此操作。您应该以编程方式将Form Designer添加到表单中:

controls

同时在设计器中将public Form3() { InitializeComponent(); Panel panel1 = new Panel(); Label[] lblArr = new Label[100];//Use any control you want int y = 10; for (int i = 0; i < 100; i++) { lblArr[i] = new Label(); lblArr[i].Text = "lbl" + i; lblArr[i].Location = new Point(30, y); panel1.Location = new Point(0, 0); panel1.Size = new Size(600, 2500); panel1.Controls.Add(lblArr[i]); y += 25; } this.Controls.Add(panel1); } 的{​​{1}}属性设置为AutoScroll

答案 2 :(得分:0)

当面板的数量或大小不允许在设计器中同时看到所有面板时。您可以按照以下方式操作:

在设计模式中:

- Create a TabControl with 2 or more tabPages,
- In TabPage0, create a MainPanel (Dock=Fill) to put most of the form controls,
- In other TabPage(s), put your additional panels.

在表单创建:

- Set the Parent property of MainPanel, i.e. mainPanel.Parent=this,
- Same for the Panels in other TabPages and update their location,
- Set the Parent property of the TabControl to null