自动滚动属性的TableLayoutPanel不工作

本文关键字:TableLayoutPanel 工作 属性 滚动 | 更新日期: 2023-09-27 17:49:19

我想在GUI上的固定区域动态添加TableLayoutPanel中的行。因此,如果记录的数量增加,那么我想要一个垂直滚动条,这将有助于用户看到更多的记录。为此,我设置了属性AutoScroll = true;,但它不起作用。

CheckBox c = new CheckBox();
c.Text = "Han";
tableLayoutPanel1.GrowStyle = TableLayoutPanelGrowStyle.AddRows;
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.AutoSize));
this.tableLayoutPanel1.RowCount = 1; this.tableLayoutPanel1.Controls.Add(c, 0, 0);
tableLayoutPanel1.AutoScrollPosition = new Point(0, tableLayoutPanel1.VerticalScroll.Maximum);
this.tableLayoutPanel1.AutoScroll = true;
tableLayoutPanel1.Padding = new Padding(0, 0, SystemInformation.VerticalScrollBarWidth, 0);

自动滚动属性的TableLayoutPanel不工作

从另一个问题的评论中查看您的代码,您似乎在每一行添加行样式,尝试添加行而不添加样式或先添加一种样式,然后添加所有行,

  tableLayoutPanel1.GrowStyle = TableLayoutPanelGrowStyle.AddRows;
            tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.AutoSize));
            this.tableLayoutPanel1.Controls.Add(c);
            this.tableLayoutPanel1.Controls.Add(c1);
            this.tableLayoutPanel1.Controls.Add(c2);
tableLayoutPanel1.VerticalScroll.Maximum = 200;
            this.tableLayoutPanel1.AutoScroll = true;

所以你没有发布你的代码,我不能说你做错了什么。但这是你应该为你的表格布局面板添加控件的方式:

tableLayoutPanel.GrowStyle = TableLayoutPanelGrowStyle.AddRows;
tableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.AutoSize));
tableLayoutPanel.RowCount = tableLayoutPanel.RowStyles.Count;
YourCountrol control = new YourControl();
// setup your control properties
tableLayoutPanel.Controls.Add(control);
// scroll to the bottom to see just added control
tableLayoutPanel.AutoScrollPosition = 
    new Point(0, tableLayoutPanel.VerticalScroll.Maximum);

当然你应该有tableLayoutPanel.AutoScroll = true

顺便说一句,为了避免烦人的水平滚动条,你应该在你的表格布局面板上添加右填充:

tableLayoutPanel.Padding = 
     new Padding(0, 0, SystemInformation.VerticalScrollBarWidth, 0);

UPDATE AutoSize应该禁用tableLayoutPanel。否则将不会显示滚动条,而会显示表格布局面板。

相关文章:
  • 没有找到相关文章