2017-02-17 7 views
1

Во время выполнения я добавляю элементы управления к элементу управления, который наследуется от TableLayoutPanel. Элементы управления добавляются по одному, основываясь на взаимодействии с пользователем, а не в цикле.Как прокрутить нижнюю строку 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); 

Я хотел бы для прокрутки этой строки/элемента управления в представлении.

Как это делается?

ответ

1

Чтобы прокрутить элемент управления на вид в ScrollableControl, как TableLayoutPanel, вы можете использовать метод ScrollControlIntoView. Например:

this.ScrollControlIntoView(uc); 

Примечание: Он не выбирает элемент управления.

Также, если вы вызываете метод управления Select, он будет выбран (если его можно выбрать), а также его прокручиваемый родитель будет прокручиваться, чтобы отобразить выбранный дочерний элемент управления. Например:

uc.Select(); 
0

Вы можете сделать это, установив VerticalScroll Группы, но я думаю, что было бы лучше использовать ScrollControlIntoView вместо.

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

или

panel.VerticalScroll.Value = panel.VerticalScroll.Maximum 
+0

'panel.VerticalScroll.Value = panel.VerticalScroll.Maximum' фактически не работает. Вы можете проверить это. – LarsTech