DataGridView, Настройка ширины и высоты для DataTable - PullRequest
14 голосов
/ 26 апреля 2011

Я привязываю DataTable к GridView.Он не регулируется по высоте и ширине таблицы данных.Как я могу растянуть ширину сетки, чтобы я показывал все столбцы, а высоту уменьшить, если строк мало.

enter image description here

Ответы [ 5 ]

21 голосов
/ 27 апреля 2011

просто перейдите в свойства вашей таблицы данных =>

, а затем в разделе Layout =>

AutoSizeColumnsMode установите его в Fill ...

3 голосов
/ 26 апреля 2011

Чтобы автоматически изменить размеры столбцов, чтобы они соответствовали данным (по ширине), а затем автоматически измените размер формы, чтобы соответствовать виду сетки (по ширине), используйте следующий код:

foreach (DataGridViewColumn column in dataGridView1.Columns)
                column.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;

this.Width = dataGridView1.Width + 100;

где dataGridView1 - это имя Datagridview в этом примере, а this ссылается на экземпляр формы. Значение 100 - это константа, определяющая, на сколько пикселей шире форма, чем вид сетки данных. (примечание: вам может потребоваться проверка ширины, чтобы убедиться, что форма и вид сетки данных не шире, чем экран пользователя)

Чтобы автоматически изменить размер сетки данных, чтобы соответствовать строкам (по высоте), а затем автоматически изменить размер формы, чтобы соответствовать сетке (по высоте), используйте следующий код:

int totalRowHeight = dataGridView1.ColumnHeadersHeight;

foreach (DataGridViewRow row in dataGridView1.Rows)
    totalRowHeight += row.Height;

dataGridView1.Height = totalRowHeight;
this.Height = dataGridView1.Height + 100;

где dataGridView1 - это имя Datagridview в этом примере, а this ссылается на экземпляр формы. Значение 100 является константой того, на сколько пикселей вы хотите получить форму, чем на сетке данных. (примечание: вы можете захотеть проверить высоту, чтобы убедиться, что форма и вид сетки данных не выше экрана пользователя)

2 голосов
/ 26 апреля 2011

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

Что я обычно делаю в таких случаях, как ваш, - это помещаю элемент управления разделителем в форму. Текстовое поле в верхней части и кнопка «Импорт счетов» будут отображаться на верхней панели элемента управления разделителем, а DataGridView - на нижней панели. Затем установите свойство Dock объекта DataGridView, чтобы заполнить нижнюю панель элемента управления разделителем. Таким образом, когда пользователь изменяет размеры формы, DataGridView будет увеличиваться / уменьшаться вместе с ней.

Вы можете дополнительно контролировать способ отображения столбцов, задав свойство DataGridView.AutoResizeRows.

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

1 голос
/ 13 мая 2013

Это работает при условии, что все строки имеют одинаковую высоту, даже когда первая строка заголовка имеет разную высоту (например, длинные заголовки переносятся)

If List.RowCount = 0 Then
  List.Height = 0
ElseIf List.RowCount = 1 Then
  List.Height = List.ColumnHeadersHeight
Else
  List.Height = List.ColumnHeadersHeight + List.Rows(1).Height * (List.RowCount + 1)
End If
0 голосов
/ 10 июля 2016

Установите для datagridviewautosizecolumn значение «All». Затем в форме, которая содержит datagridview, при условии, что вы заполняете представление сетки данных в обработчике событий загрузки или в каком-либо другом обработчике событий по желанию везде, где данные загружаются (должно быть после того, как данныезагружен) тип: (VB)

Me.Width = DataGridView1.Width + 50 ' Number of pixels wider than the datagridview you want the form to be.

datagridview1 - это имя элемента управления datagridview.Me относится к форме, содержащей элемент управления datagridview.

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

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