2011-10-16 88 views
1

我有一個包含複選框的列。調整DataGridView的大小

我的主要問題是,當我調用該函數:

dataGrid.AutoResizeColumn(0, DataGridViewAutoSizeColumnMode.DisplayedCells); 

它橫跨複選框列過了,我想該列留在25寬。

我該怎麼做? (僅複選框列未拉伸)


下面是一些更多的代碼,展示了我希望發生的事情:

dataGrid.AutoResizeColumn(0, DataGridViewAutoSizeColumnMode.DisplayedCells); 
dataGrid.AutoResizeColumn(1, DataGridViewAutoSizeColumnMode.Fill); 
dataGrid.AutoResizeColumn(2, DataGridViewAutoSizeColumnMode.Fill); 
dataGrid.AutoResizeColumn(3, DataGridViewAutoSizeColumnMode.DisplayedCells); 
dataGrid.AutoResizeColumn(4, DataGridViewAutoSizeColumnMode.Fill); 
dataGrid.AutoResizeColumn(5, DataGridViewAutoSizeColumnMode.Fill); 

但填充給我一個錯誤。

+0

你用填充得到什麼錯誤界定?如果您提供詳細和明確的措辭問題以及所有相關詳細信息(包括錯誤),您的網站將能夠以更快的速度獲得答案。 –

回答

2

由於您顯示的AutoResizeColumn方法將第一個參數作爲列索引調整大小 - 如果您使用複選框列的索引調用此方法,那麼您顯式告訴網格來調整該列的大小。如果你不想調整大小,不要那麼做!

如果您設置的調整模式上一級網格,你做這樣的:

dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells; 
與設定尺寸模式,則是這種方法

現在,該複選框會時可能會更改想要它。

這個問題的答案是使用無論是設計師還是你上面提到的方法,並自動調整模式設置複選框列

如果你絕對必須遍歷所有的列設置的自動調整模式,然後您唯一的選擇是檢查循環中是否有複選框列,並應用其他更多。


這是在回答您的評論 - 你會看到的錯誤是由AutoResizeColumn方法拋出一個ArgumentException。這全部記錄在AutoResizeColumn方法的MSDN頁面上。 您無法指定AutoSize模式爲None或填充爲

這聽起來像你想要做的是一樣的東西:

// If column 3 is the checkbox column, we set its resize mode to none: 
dataGridView1.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.None; 
// Then we set the width: 
dataGridView1.Columns[3].Width = 25; 
// Finally we set the rest of the grid to fill or what ever resizing you need: 
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; 
+0

我希望發生這種情況:dataGrid.AutoResizeColumn(0,DataGridViewAutoSizeColumnMode.DisplayedCells); dataGrid.AutoResizeColumn(1,DataGridViewAutoSizeColumnMode.Fill); dataGrid.AutoResizeColumn(2,DataGridViewAutoSizeColumnMode.Fill); dataGrid.AutoResizeColumn(3,DataGridViewAutoSizeColumnMode.DisplayedCells); dataGrid.AutoResizeColumn(4,DataGridViewAutoSizeColumnMode.Fill); dataGrid.AutoResizeColumn(5,DataGridViewAutoSizeColumnMode.Fill);但填充給我一個錯誤。 – funerr

+0

@ agam360我已根據您的評論添加了更多信息。 –

+0

感謝它的訣竅! – funerr

0

您可以在datagridview_cellpainting事件

private void gvDocumentList_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) 
{ 
    if (e.ColumnIndex == gvDocumentList.Columns["checkbox column name"].Index && e.RowIndex >= 0) 
    { 
     e.PaintBackground(e.ClipBounds, true); 

     Rectangle rectRadioButton = new Rectangle(); 

     rectRadioButton.Width = 14; 
     rectRadioButton.Height = 14; 
     rectRadioButton.X = e.CellBounds.X + (e.CellBounds.Width - rectRadioButton.Width)/2; 
     rectRadioButton.Y = e.CellBounds.Y + (e.CellBounds.Height - rectRadioButton.Height)/2; 

     e.Paint(e.ClipBounds, DataGridViewPaintParts.Focus); 

     e.Handled = true; 
    } 
} 
相關問題