如果内容高于面板本身,我希望能够在TableLayoutPanel
内滚动
我试过了:
AutoScroll
设为true
(添加unnecessary horizontal scrollbar)AutoScroll
设置为false
,将VerticalScroll.Visible
设置为true
(滚动条会在内容增长时忽略,并且不允许用户滚动)如何在没有令人讨厌的副作用的情况下获得令人愉悦的垂直滚动条?
一些可运行的代码:
public class FormTLPTest : Form
{
TableLayoutPanel tlp;
public FormTLPTest()
{
Height = 800;
Width = 800;
tlp = new TableLayoutPanel();
tlp.Dock = DockStyle.Fill;
tlp.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;
//tlp.AutoScroll = true; //adds horizontal ScrollBar
//tlp.Padding = new Padding(0, 0, SystemInformation.VerticalScrollBarWidth, 0); //prevents horizontal ScrollBar but adds nasty gap
tlp.VerticalScroll.Visible = true;
tlp.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100.0F));
Controls.Add(tlp);
tlp.Click += Tlp_Click;
Add10Lines();
}
private void Tlp_Click(object sender, System.EventArgs e)
{
Add10Lines();
}
private void Add10Lines()
{
tlp.SuspendLayout();
for (int i = 0; i < 10; i++)
{
Label lb2 = new Label();
lb2.Margin = new Padding();
lb2.Dock = DockStyle.Fill;
lb2.BackColor = Color.White;
lb2.Text = "Some longer Text - it contains information. Don't know what I should write to fill the space";
lb2.Click += Tlp_Click;
tlp.Controls.Add(lb2, 0, i);
}
tlp.ResumeLayout();
}
}
答案 0 :(得分:2)
您发布的代码适用于我,只需将autoscroll设置为true,然后设置为tlp.HorizontalScroll.Visible = false;
编辑:
刚注意到水平条,我的分辨率隐藏了它。无论如何,将autoscroll设置为false,然后添加
tlp.AutoScroll = true;
后
Add10Lines()方法中的tlp.ResumeLayout();
。
答案 1 :(得分:0)
为什么不尝试将HorizontalScroll的高度设置为大于容器的高度。
我想说的是,如果 TableLayoutPanel 的高度为300,则表示Scroll 350的高度。
尝试将高度添加到Scroll,该高度应大于 TableLayoutPanel height
答案 2 :(得分:0)
您在代码中使用以下行,因此您没有获得垂直滚动条:
tlp.Dock = DockStyle.Fill;
请尝试以下行,而不是使用它,这可能适合您:
tlp.Dock = DockStyle.Top;