Панель автопрокрутки таблицы не запускается сверху - PullRequest
0 голосов
/ 30 августа 2018

Я работаю над очень простым приложением для разметки таблиц, чтобы начать изучать C #. Я делаю все программным союзником (не через редактор дизайна)

Я пытаюсь добавить прокрутку на приложение. Кажется, он работает нормально, но по умолчанию он не начинается с верхней части горизонтального диапазона. Я пытался добавить такие вещи, как максимальный / минимальный размер, поля автопрокрутки и т. Д., Но, похоже, ничего не дает желаемого эффекта. Я уверен, что я упускаю что-то простое.

Вот мой текущий код, поскольку он относится к проблеме.

        layout = new TableLayoutPanel();
        layout.Height = 1075;
        layout.Width = 704;
        layout.Name = "masterLayout";
        layout.Dock = DockStyle.Fill;


        layout.AutoScroll = true;

        int i = 0;
        foreach (Race r in ELECTION_DATA.races.OrderBy(o => o.race_id)) {
            layout.Controls.Add(new Label {  AutoSize = true, Text =r.race_id, Name=r.race_id, Width=300}, i, 0 );
            layout.Controls.Add(new TreeView {  AutoSize = true, Text = r.race_id, Name = r.race_id, Height = 1000, Width = 300 }, i,1);
            i += 1;
        }
        Controls.Add(layout);

Вот изображение, элемент управления Label не виден, потому что прокрутка смещена к началу представления дерева.

enter image description here

Как я могу убедиться, что свиток всегда начинается с самого верха?

1 Ответ

0 голосов
/ 30 августа 2018

ScrollLayoutPanel имеет метод с именем ScrollControlIntoView, который перемещает определенный элемент управления внутри панели в поле зрения. Если вы просто прокрутите свой первый элемент управления в виде после того, как закончите заполнение панелей, это должно обеспечить видимость верхней части. Другими словами:

// do your loop first...
foreach (...)
{
    layout.Controls.Add(...);
}

// then if any controls exist, scroll the first control into view 
if (layout.Controls.Count > 0)
{
    layout.ScrollControlIntoView(layout.Controls[0]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...