Tim
Tim

Reputation: 8919

How to scroll bottom row of TableLayoutPanel into view

At runtime I am adding controls to a control that inherits from TableLayoutPanel. Controls are added one at a time, based on user interaction, not in a loop.

Here's the setup of my control that inherits from the TLP:

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

And I'm adding user-controls to the bottom of the panel like this:

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

I would like to scroll that row/control into view.

How is that done?

Upvotes: 2

Views: 1176

Answers (2)

Sudhakar Rao
Sudhakar Rao

Reputation: 175

You can do that by setting the VerticalScroll of the Panel but I think it would be better to use ScrollControlIntoView instead.

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

or

panel.VerticalScroll.Value = panel.VerticalScroll.Maximum

Upvotes: 0

Reza Aghaei
Reza Aghaei

Reputation: 125312

To scroll a control into view in a ScrollableControl like TableLayoutPanel, you can use ScrollControlIntoView method. For example:

this.ScrollControlIntoView(uc);

Note: It doesn't select the control.

Also If you call Select method of a control, it will be selected (if selectable) and also its scrollable parent will be scrolled to bring the selected child control into view. For example:

uc.Select();

Upvotes: 4

Related Questions