Программно изменить размер DataGridView для удаления полос прокрутки - PullRequest
9 голосов
/ 11 июля 2011

У меня есть DataGridView с определяемым пользователем количеством столбцов (где-то от ~ 6-60) числовых данных. На верхнем уровне это количество данных в сетке превышает то, что может быть отображено на экране сразу. У меня есть график, который идет с данными. Я хотел бы сохранить эти два в синхронизации, так что конкретное время T на графике находится на одной линии по вертикали с тем же временем в сетке.

Чтобы сделать это, я бы хотел сделать DGV достаточно широким, чтобы избежать горизонтальной полосы прокрутки, чтобы график был одинаково широким, а затем переложить прокрутку на элемент управления контейнера. Тем не менее, я не могу найти способ непосредственно получить ширину, на которую мне нужно установить DGV, чтобы убрать с нее полосу прокрутки.

Ответы [ 2 ]

8 голосов
/ 11 июля 2011

Чтобы DataGridView не отображал свою горизонтальную полосу прокрутки, вам нужно убедиться, что ширина вашего DGV не меньше ширины его столбцов плюс ширина заголовка строки.Вам также необходимо настроить два пикселя, которые добавляются к ширине (и высоте) элемента управления, когда его свойство BorderStyle не равно None.

Вот метод, который возвращает это минимальное значение дляданный DataGridView:

/// <summary>
/// Return the minimum width in pixels a DataGridView can be before the control's vertical scrollbar would be displayed.
/// </summary>
private int GetDgvMinWidth(DataGridView dgv) {
    // Add two pixels for the border for BorderStyles other than None.
    var controlBorderWidth = (dgv.BorderStyle == BorderStyle.None) ? 0 : 2;

    // Return the width of all columns plus the row header, and adjusted for the DGV's BorderStyle.
    return dgv.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) + dgv.RowHeadersWidth + controlBorderWidth;
}
3 голосов
/ 14 июля 2011

Это изменит размер столбцов так, чтобы они соответствовали пространству, которое им предоставлено, и удалит горизонтальную полосу прокрутки.

dgv.AutoSizeColumnsMode  = DataGridViewAutoSizeColumnsMode.Fill;

Это изменит размер столбцов, чтобы они стали наименьшей возможной ширины, и при этом значения останутсяячейки видны, и он автоматически изменит размер сетки данных, чтобы соответствовать столбцам, но горизонтальная полоса прокрутки может появиться, если форма недостаточно велика.В этом случае вам придется изменить ширину формы.

dgv.AutoSizeColumnsMode  = DataGridViewAutoSizeColumnsMode.AllCells;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...