У меня есть настраиваемая вертикальная полоса прокрутки, которую мне нужно связать с DataGridView (я не хочу использовать ее собственную полосу прокрутки), однако я не могу понять, как определяется и определяется максимум полосы прокрутки в отношении DataGridView независимо от того, какой размер экрана. Более того, мне нужно, чтобы он правильно обновлялся, если размер формы изменяется.
Вот код, который я пробовал, но, похоже, он не работает. 76,92 - это отношение высоты строки DataGridView к высоте ее контейнера, а 12 - это высота строки DataGridView.
private void Form1_Resize(object sender, EventArgs e)
{
int n = (int)((tableLayoutPanel1.Height * 76.92 / 100) / 12);
vScrollBar1.Maximum =DrawdownGridView.RowCount- n;
}
Любая помощь будет оценена по достоинству. Заранее спасибо.
Вы не можете жестко запрограммировать такие значения. Максимум полосы прокрутки определяется высотой содержимого ScrollableControl. Поскольку это DGV, сумма высоты всех его строк. Высота рядов варьируется. Фактическое достигнутое максимальное значение прокрутки затем определяется предыдущим значением за вычетом высоты всех строк, которые могут отображаться в видимой области. Таким образом, максимум также можно вычислить, используя
DGV.PreferedSize.Height
минусHorizontalScrollBar.Height
минусDGV.ColumnHeadersHeight
- 2 (верхняя и нижняя границы).