TableLayoutPanel 中的垂直滚动条

vertical ScrollBar in TableLayoutPanel

如果内容高于面板本身,我希望能够在 TableLayoutPanel 内滚动。
我试过:

我怎样才能得到一个令人愉快的垂直滚动条而没有令人讨厌的副作用?


一些可运行的代码:

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();
    }
}

您发布的代码对我有用,只需将自动滚动设置为 true,然后 tlp.HorizontalScroll.Visible = false;

编辑: 无论如何,我只是注意到了水平条,我的决议隐藏了它。无论如何,将自动滚动设置为 false,然后添加
tlp.AutoScroll = true;tlp.ResumeLayout(); 在 Add10Lines() 方法中。

为什么不尝试将 Horizo​​ntalScroll 的高度设置为大于容器的值。

我想说的是,如果TableLayoutPanel的高度是300,那么Scroll的高度就是350。

尝试向 Scroll 添加高度,该高度应大于 TableLayoutPanel 高度

您在代码中使用了以下行,因此您没有获得垂直滚动条:

tlp.Dock = DockStyle.Fill;

与其使用它,不如试试下面这行,它可能对你有用:

tlp.Dock = DockStyle.Top;