如何将 TableLayoutPanel 的底行滚动到视图中

How to scroll bottom row of TableLayoutPanel into view

在运行时,我将控件添加到继承自 TableLayoutPanel 的控件。基于用户交互一次添加一个控件,而不是循环添加。

这是我的控件的设置,它继承自 TLP:

this.RowCount = 0; 
this.RowStyles.Clear();
this.Dock = DockStyle.Fill;
this.VerticalScroll.Enabled = true;
this.HorizontalScroll.Enabled = false;
this.AutoScroll = true

我正在向面板底部添加用户控件,如下所示:

var uc = new FooControl();
this.Controls.Add(uc);
this.SetRow(uc, this.Controls.Count - 1);
this.SetColumn(uc, 0);

我想将 row/control 滚动到视图中。

这是怎么做到的?

ScrollableControl like TableLayoutPanel, you can use ScrollControlIntoView 方法中将控件滚动到视图中。例如:

this.ScrollControlIntoView(uc);

注意:它不是select控件。

此外,如果您调用控件的 Select 方法,它将被 selected(如果 selectable)并且它的可滚动父级将被滚动以带来 selected 子控件进入视图。例如:

uc.Select();

您可以通过设置面板的 VerticalScroll 来做到这一点,但我认为最好改用 ScrollControlIntoView。

private void panel1_ControlAdded(object sender, ControlEventArgs e)
{
    panel1.ScrollControlIntoView(e.Control);
}

panel.VerticalScroll.Value = panel.VerticalScroll.Maximum