Обнаружить конец вертикальной прокрутки в TableLayoutPanel - PullRequest
0 голосов
/ 08 мая 2020

У меня есть TableLayoutPanel, куда я вставляю несколько элементов, так что позиция ScrollBar меняется в зависимости от элементов, которые я получаю из конечной точки.

Эти элементы управления, добавленные на панель, добавляются в оператор foreach, например:

foreach (var test in testList)
{
  //Multiple Combobox, panels etc. created programatically
    tableLayoutPanel.Controls.Add(control1);
    tableLayoutPanel.Controls.Add(control2);
    tableLayoutPanel.Controls.Add(control3);
}
FormatPanel(tableLayoutPanel);

Также я форматирую свою панель как:

 private void FormatPanel(TableLayoutPanel panel)
        {
            TableLayoutRowStyleCollection styles = panel.RowStyles;
            foreach (RowStyle style in styles)
            {
                style.SizeType = SizeType.Absolute;
                style.Height = 50;
            }
        panel.HorizontalScroll.Maximum = 0;
        panel.AutoScroll = false;
        panel.VerticalScroll.Visible = false;
        panel.AutoScroll = true;
    }

Я хочу знать, как я могу определить, находится ли позиция ScrollBar на земле и запустить мероприятие?

Как этого добиться?

ОБНОВЛЕНИЕ

Я пытаюсь использовать конструктор сразу после InitializeComponent()

  tableLayoutPanel.Scroll +=  (s, e) => {
                HandleScroll();
            };

Тогда Я создаю метод HandleScroll:

  private void HandleScroll()
        {
            var maxVerticalScroll = tableLayoutPanel.VerticalScroll.Maximum;

            if (tableLayoutPanel.VerticalScroll.Value == maxVerticalScroll)
            {
                var a = "";
            }

        }

Но по какой-то причине maxvalue выше, чем конец моей прокрутки, почему это произошло?

...