Как прокрутить нижнюю строку 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);

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

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


person Tim    schedule 17.02.2017    source источник


Ответы (2)


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

this.ScrollControlIntoView(uc);

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

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

uc.Select();
person Reza Aghaei    schedule 17.02.2017

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

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

or

panel.VerticalScroll.Value = panel.VerticalScroll.Maximum
person Sudhakar Rao    schedule 17.02.2017
comment
panel.VerticalScroll.Value = panel.VerticalScroll.Maximum на самом деле не работает. Возможно, вы захотите это проверить. - person LarsTech; 18.02.2017