2010-01-29 3 views
9

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

alt text http://www.timvw.be/wp-content/images/datagridview-to-excel-1.gif

Любые предложения?

+0

Хороший вопрос ... но нет удовлетворительных ответов !!!! :( –

+0

Посмотрите на мой ответ здесь. – Tina

+0

Ссылка на изображение сломана. –

ответ

2

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

myDataGrid.AutoSizeColumnsMode = Fill 

EDIT: Это просто изменяет размеры столбцов. Я не уверен, как вы избавитесь от серого серого, кроме изменения размера сетки.

+0

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

+0

С вашим редактированием вы ошибаетесь, считая, что для AutoSizeRowsMode есть значение заливки. –

+0

http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewautosizerowsmode.aspx –

5

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

dataGridView1.RowsHeaderVisible = false; 

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

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

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

+1

Итак ... нет идеального решения? –

+0

Спасибо, ты спас мой день .. !! – User5590

1
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; 
+0

Ошибка: не может неявно преобразовать тип 'System.Windows.Forms.DataGridViewAutoSizeColumnMode' в 'System.Windows.Forms.DataGridViewAutoSizeColumnsMode'. Явное преобразование существует (вы пропускаете листинг?) –

+0

Вы можете добавить 's' после столбца в свой System.Windows.Forms.DataGridViewAutoSizeColumnMode, и проблема будет решена :) – Tina

4

Я не нашел простого способа удалить «неиспользуемое» или серое (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, но это может быть изменено по мере необходимости.

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

+0

Упрощенный, это помогло ... это было Ближайший я до сих пор – Jack

5

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

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

Я украл его с этого поста: removing the empty gray space in datagrid in c#

+0

Это работает, но у вас все еще есть граница. Любая идея, как удалить это? –

0

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

Смежные вопросы