DatagridView: удалить неиспользуемое пространство? - PullRequest
9 голосов
/ 29 января 2010

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

альтернативный текст http://www.timvw.be/wp-content/images/datagridview-to-excel-1.gif

Есть предложения?

Ответы [ 7 ]

7 голосов
/ 06 августа 2012

Иногда (особенно с winforms) лучше всего взломать:

dataGridView1.BackgroundColor = System.Drawing.SystemColors.Control;

Я украл это из этого поста: удаление пустого серого пространства в сетке данных в c #

5 голосов
/ 29 января 2010

Установите для свойства RowsHeaderVisible значение false, вы можете сделать это из конструктора, в категории Appearence или из кода:

dataGridView1.RowsHeaderVisible = false;

Для того, чтобы удалить строку индикатора с левой стороны, как и для остальной части серого пространства, вы можете попробовать установить вышеупомянутый AutoSizeColumnsMode в Fill, но нижняя часть будет по-прежнему серой из-за отсутствия рядов. .

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

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

4 голосов
/ 17 мая 2011

Я не нашел простого способа удалить «неиспользуемое» или серое (BackgroundColor) пространство. Однако эффективным решением для меня было скрыть границы DataGridView и изменить его цвет фона на фон окружающего элемента управления. По сути, восприятие состоит в том, что больше нет неиспользуемого пространства.

Вот фрагмент в псевдокоде:

TableGridView = DataGridView()
TableGridView.Width = 0
TableGridView.Height = 0
TableGridView.AutoSize = true 
TableGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
TableGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
TableGridView.BackgroundColor = SystemColors.ControlLightLight
TableGridView.BorderStyle = BorderStyle.None

Я где-то читал, что настройка AutoSize не применима, однако она изменила меня. В этом примере предполагается, что окружающий элемент управления имеет цвет фона SystemColors.ControlLightLight, но при необходимости его можно изменить.

Пожалуйста, проголосуйте, если это помогло вам.

2 голосов
/ 29 января 2010

Я верю, что вы хотите:

myDataGrid.AutoSizeColumnsMode = Fill

РЕДАКТИРОВАТЬ: Это просто изменяет размер столбцов. Я не уверен, как бы вы избавились от серого пространства строки, кроме изменения высоты сетки.

1 голос
/ 25 августа 2010
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
0 голосов
/ 01 ноября 2018

перейти к конструктору:

1) изменить цвет фона представления данных так же, как цвет формы

2) установить для сетки данных "BorderStyle" значение None

0 голосов
/ 19 октября 2012

Ну, я трудился, чтобы найти ответ на этот вопрос раньше, но, в конце концов, если вы хотите имитировать пустой DataGridView, то длинный ответ заключается в создании " White " объектов Rectangle и использовании Graphics для заполнения вся сетка по переопределенному методу OnPaint.

...