我有用于动态创建AutoScroll = true控件的TableLayoutPanel。当我添加新控件时,它工作得很好。但是当我移除并且所有控件都可见时,垂直滚动也是可见的。这里有一些截图:
预期/正确的滚动可见性:

不正确的可见性:

有什么想法吗?
更新:以下是一些代码
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();AutoSize为true,AutoSizeMode为GrowAndShrink
发布于 2014-09-01 15:50:44
这个问题与TableLayoutPanel scrolling有关。
您必须使用面板而不是TableLayoutPanel来进行滚动。
下面是一个解决这个问题的例子(对于垂直滚动):
按如下方式设置TableLayoutPanel属性:
发布于 2013-03-26 01:29:05
删除动态控件时,需要删除在添加过程中插入的额外行,并将表布局面板高度重新调整为小于滚动容器高度。
在添加过程中,表格布局面板的高度会增加,这是由滚动容器处理的;但是当您删除控件时,表格布局面板的高度并不会减少它的高度以适应滚动容器。
要做到这一点,一种方法是为行指定固定的高度,并将表格布局面板设置为“自动”。
发布于 2020-09-18 02:35:27
最简单和最有趣的解决方案之一就是禁用和启用tableLayoutPanel1.AutoScroll
在您的删除过程代码中,在末尾添加这些代码:
tableLayoutPanel1.AutoScroll = False
tableLayoutPanel1.AutoScroll = Truehttps://stackoverflow.com/questions/15620454
复制相似问题