2015-02-10 4 views
1

Есть ли способ иметь горизонтальную полосу прокрутки, когда AutoSizeMode для заполненного столбца заполняется?Горизонтальная полоса прокрутки в DataGridView

У меня есть 2 столбца, и я хочу, чтобы они заполнили ширину DataGridView. Когда ширина содержимого в строках превышает ширину DataGridView, я хочу включить горизонтальную полосу прокрутки. Не знаете, как это сделать. В результате проведенных исследований я обнаружил, что использование опции «AllCell» в AutoSizeMode позволит использовать полосу прокрутки, однако я хочу, чтобы строки заполняли DataGridView.

ответ

0

Вы не можете иметь оба поведения изначально.
Вам нужно будет его код, используя DataGridViewColumn.MinimumWidth.
Вот пример использования DataGridView «s CellValueChanged событие (но вы, безусловно, придется адаптировать его к конкретному случаю):

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
{ 
    dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; 
    foreach (DataGridViewColumn column in dataGridView1.Columns) 
     column.MinimumWidth = column.Width; 
    dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; 
} 

Будьте осторожны, это может быть очень много времени, если у вас есть много строк в ваш datagrid.

+0

Я боялся, что это был единственный способ сделать это. Мне нужно будет провести некоторое тестирование, чтобы увидеть, как медленно он может получить. Спасибо за ответ. – user2970916

+0

'DataGridViewAutoSizeColumnsMode.DisplayedCells' может помочь вам, если он слишком медленный, но вам также придется переопределить событие' Scroll'. – Bioukh

0

Там простой способ вокруг него, хотя это, очевидно, не является идеальным:

  • добавить пустой collumn с AutoSizeMode набор для заполнения в конце
  • и установить HeaderText последнего столбца пустой string (что я, очевидно, забыл сделать в своей демо ...)

Таким образом, это (почти) выглядит так, как если бы в AutoSizeMode второго столбца был установлен FIll.

Здесь Column1 и Столбец2 имеют AutoSizeMode установлен DisplayedCells, Column3 менюЗаливка:

enter image description here enter image description here

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