TableLayoutPanel中显示垂直滚动(TableLayoutPanel displays

2019-08-18 00:11发布

我有TableLayoutPanel中动态地创建具有自动滚屏= true控制。 它的做工精细当我添加新的控件。 但是,当我删除所有控件都可见,垂直滚动是可见的。 这里一些截图:

预期/正确滚动知名度:

不正确的可见性:

有任何想法吗?

更新:下面是一些代码

tableLayoutPanel1.SuspendLayout();
tableLayoutPanel1.RowCount = 0;
tableLayoutPanel1.RowStyles.Clear();
tableLayoutPanel1.AutoScroll = true;
tableLayoutPanel1.Padding = new Padding(0, 0, SystemInformation.VerticalScrollBarWidth, 0);
foreach (var item in objects)
{
     tableLayoutPanel1.RowCount++;
     tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.AutoSize));
     tableLayoutPanel1.Controls.Add(CreateNewItem(item));
 }

 tableLayoutPanel1.RowCount++;
 tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.AutoSize));
 tableLayoutPanel1.Controls.Add(CreateAddButton());

 tableLayoutPanel1.ResumeLayout();

并删除代码

tableLayoutPanel1.SuspendLayout();
tableLayoutPanel1.Controls.Remove(item);
tableLayoutPanel1.RowStyles.RemoveAt(0);
tableLayoutPanel1.RowCount--;
tableLayoutPanel1.ResumeLayout();

自动调整大小是真实的,AutoSizeMode是GrowAndShrink

Answer 1:

这个问题涉及TableLayoutPanel中滚动 。
你必须使用一个小组,而不是滚动TableLayoutPanel中的。
下面是要解决这个问题(对于垂直滚动)的示例:

  • 设置你的TableLayoutPanel中的特性如下:
    • 码头= DockStyle.Top
    • 自动调整大小=真
    • AutoSizeMode = AutoSizeMode.GrowAndShrink
    • 自动滚屏=假。
  • 把你的TableLayoutPanel中与性能的面板:
    • 码头= DockStyle.Fill
    • 自动滚屏=真
    • 自动调整大小= FALSE。


Answer 2:

当您删除动态控件,您需要删除在加入和重新大小的表格布局面板的高度比滚动容器高度较小时插入额外的行。

在加入过程中表布局面板的高度会增加,这由滚动容器处理; 但是当你删除控件,表格的布局面板的高度不会降低它的高度,以适应滚动容器。

这样做的一个办法是给固定的高度行,并设置表格的布局面板抓紧设置为“自动”。



Answer 3:

我插入到TableLayoutPanel中XtraScrollableControl(DevExpress的控制)。 tableLayoutPanel.Dock设置为顶部和XtraScrollableControl.Dock来填充。 该解决方案并没有解决这个问题,但我的行为,我需要。



Answer 4:

我算行的数量我TableLayoutPanel中,看看有多少会适合。 下面适合I的量设置自动滚屏=假的添加和删除方法。 滚动将出现大集和消失的小套。

if (tableLayoutPanel.RowCount < 15)
{
    panel1.AutoScroll = false;
}
else
{
     panel1.AutoScroll = true;
}


文章来源: TableLayoutPanel displays vertical scroll