一、使用AutoSizeColumnsMode屬性自適應列寬
DataGridView控件提供了AutoSizeColumnsMode屬性,用於設置列的自適應模式,包括:
- None:不自適應,列寬為默認寬度
- AllCells:根據單元格內容自適應列寬,包括列頭單元格和數據單元格
- AllCellsExceptHeader:根據數據單元格內容自適應列寬,不包括列頭單元格
- ColumnHeader:根據列頭單元格內容自適應列寬
- Fill:均分控件可用寬度,填滿整個控件
例如,如果我們將AutoSizeColumnsMode屬性設置為AllCells,DataGridView控件會根據單元格內容自適應列寬。這樣,在用戶輸入或者添加新的數據時,列寬會自動調整,保證所有數據都能夠完整的顯示在單元格中。代碼示例:
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
二、使用AutoResizeColumns方法手動調整列寬
AutoSizeColumnsMode屬性僅適用於列的自適應模式。如果我們需要手動調整一列或多列的寬度,可以使用AutoResizeColumns方法。該方法接受一個DataGridViewAutoSizeColumnsMode枚舉值作為參數,指定需要調整的列的自適應模式。代碼示例:
// 自適應所有列 dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); // 自適應指定列 dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCellsExceptHeader, DataGridViewAutoSizeColumnMode.ColumnHeader);
在上述代碼中,第一行代碼會自適應所有列,第二行代碼則會自適應除列頭單元格外的所有數據單元格。
三、使用ColumnHeaderMouseDoubleClick事件手動調整列寬
如果我們需要進一步的手動調整列寬,可以使用ColumnHeaderMouseDoubleClick事件。該事件在用戶雙擊列頭單元格時觸發,我們可以編寫事件處理方法計算列寬並進行調整。代碼示例:
private void dataGridView1_ColumnHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) { DataGridView gridView = sender as DataGridView; if (gridView != null && e.Button == MouseButtons.Left) { DataGridViewColumn clickedColumn = gridView.Columns[e.ColumnIndex]; int paddingWidth = gridView.RowHeadersVisible ? gridView.RowHeadersWidth : 0; clickedColumn.Width = clickedColumn.GetPreferredWidth(DataGridViewAutoSizeColumnMode.AllCells, true) + paddingWidth; } }
上述代碼中,我們首先獲取DataGridView控件和用戶雙擊的列。然後,我們計算出列的最佳寬度,並加上行頭的寬度。實際上,GetPreferredWidth方法返回的是列的“期望”寬度,但由於這個方法考慮了單元格內容的特殊情況,所以可以保證列寬恰到好處。
四、使用DefaultCellStyle.WrapMode屬性自動換行單元格內容
以上三種方法可以讓DataGridView列寬自適應,但如果單元格內容過長,可能會導致單元格顯示不完整。為了解決這個問題,我們可以使用DefaultCellStyle.WrapMode屬性來自動換行單元格內容,並調整行高使所有內容都能夠完整的顯示。代碼示例:
dataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.True; dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
上述代碼中,我們將DefaultCellStyle.WrapMode屬性設置為True,表示自動換行單元格內容。然後設置AutoSizeRowsMode屬性為AllCells,控件會自動根據單元格內容調整行高,保證所有內容完整的顯示在單元格中。
原創文章,作者:UXGRY,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/331765.html