DataGridView列的寬度、行的高度自動調整
注意:DataGridView控制元件是從.NET Framework 2.0版本開始追加的。
介紹一下DataGridView列的寬度和行的高度,根據單元格或Header的內容(一般是內容全部被表示)自動調整的方法。
內容變更時自動調整
列的寬度自動調整
DataGridView列的寬度自動調整,可以使用DataGridView.AutoSizeColumnsMode屬性實現。
下面的程式碼就是列的寬度根據Header和所有單元格的內容自動調整的。
[C#]
//根據Header和所有單元格的內容自動調整列的寬度 DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;DataGridViewAutoSizeColumnsMode列舉的成員如下所示(是從MSDN「
DataGridViewAutoSizeColumnsMode成員名稱 | 說明 |
AllCells | 列寬調整到適合列中所有單元格(包括標頭單元格)的內容。 |
AllCellsExceptHeader | 列寬調整到適合列中除標頭單元格以外所有單元格內容。 |
ColumnHeader | 列寬調整到適合列標頭單元格的內容。 |
DisplayedCells | 列寬調整到適合位於螢幕上當前顯示的行中的列的所有單元格(包括標頭單元格)的內容。 |
DisplayedCellsExceptHeader | 列寬調整到適合位於螢幕上當前顯示的列中的列的所有單元格(不包括標頭單元格)的內容。 |
Fill | 列寬調整到使所有列寬精確填充控制元件的顯示區域,要求使用水平滾動的目的只是保持列寬大於DataGridViewColumn.MinimumWidth屬性的值。相對列寬由相對 DataGridViewColumn.FillWeight屬性值決定。 |
None | 列寬不會自動調整。 |
行高的自動調整
DataGridView行的高度自動調整,可以使用DataGridView1.AutoSizeRowsMode屬性實現。
[C#]
//根據Header和所有單元格的內容自動調整行的高度 DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;DataGridViewAutoSizeRowsMode列舉的成員如下所示(是從MSDN「
DataGridViewAutoSizeRowsMode成員名稱 | 說明 |
AllCells | 將行高調整到適合行中所有單元格(包括標頭單元格)的內容。 |
AllCellsExceptHeaders | 將行高調整到適合行中所有單元格(不包括標頭單元格)的內容。 |
AllHeaders | 將行高調整到適合行標頭的內容。 |
DisplayedCells | 將行高調整到適合螢幕上當前顯示的行中所有單元格(包括標頭單元格)的內容。 |
DisplayedCellsExceptHeaders | 將行高調整到適合螢幕上當前顯示的行中所有單元格(不包括標頭單元格)的內容。 |
DisplayedHeaders | 將行高調整到適合螢幕上當前顯示的行標頭的內容。 |
None | 行高不自動調整。 |
列Header的高度、行Header的寬度自動調整
列Header的高度自動調整,可以通過設定DataGridView物件ColumnHeadersHeightSizeMode屬性為DataGridViewColumnHeadersHeightSizeMode.AutoSize實現。
行Header的寬度行自動調整,可以通過設定DataGridView物件RowHeadersWidthSizeMode屬性為DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders(根據所有行Header的內容自動調整)或AutoSizeToDisplayedHeaders(根據當前顯示的行Header內容自動調整)或AutoSizeToFirstHeader(根據第一行Header的內容自動調整)來實現。
[C#]
//列Header的高度自動調整 DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; //行Header的寬度自動調整 DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;關於優化
通過設定AutoSizeColumnsMode或AutoSizeRowsMode屬性,列或行可以根據單元格的內容變更,自動調整,但是經常使用這種方法,執行速度就會低下。尤其當行或列數量比較多時,更為明顯。
這時,可以替換AllCells而設定DisplayedCells,只對當前顯示單元格的內容自動調整,這樣就可以提高執行速度。
只有被指定的列自動調整
只有被指定列自動調整,可以使用指定列(DataGridViewColumn物件)的AutoSizeMode屬性實現。使用方法和AutoSizeColumnsMode屬性基本一樣。
下面是對第一列的寬度自動調整的程式碼。
[C#]
//第一列的寬度自動調整 DataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;和AutoSizeColumnsMode屬性不同,AutoSizeMode屬性可以設定為NotSet。當設定為NotSet時,列的自動調整的設定會繼承DataGridView.AutoSizeColumnsMode屬性的設定。AutoSizeMode屬性設定為NotSet繼承AutoSizeColumnsMode屬性時,所繼承的設定可以使用DataGridViewColumn.InheritedAutoSizeMode屬性取得。
任意自動調整
列的寬度自動調整
對DataGridView內所有列只進行一次自動調整,可以使用DataGridView物件的AutoResizeColumns方法實現。AutoResizeColumns方法和AutoSizeColumnsMode屬性一樣,根據DataGridViewAutoSizeColumnsMode列舉值指定自動調整的方法。如果只對指定列自動調整時,可以使用DataGridView物件的AutoResizeColumn方法。
[C#]
//DataGridView1所有列的寬度自動調整 DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); //DataGridView1第一列的寬度自動調整 DataGridView1.AutoResizeColumn(0, DataGridViewAutoSizeColumnMode.AllCells);補充:上面的例子中使用AutoResizeColumns或AutoResizeColumn指定DataGridViewAutoSizeColumnMode.AllCells時,可以省去引數。
行的高度自動調整
和列的設定一樣,使用AutoResizeRows方法只對指定行的高度進行自動調整。
[C#]
//DataGridView1所有行的高度自動調整 DataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells); //DataGridView1第一行的高度自動調整 DataGridView1.AutoResizeRow(0, DataGridViewAutoSizeRowMode.AllCells);補充:上面的例子中使用AutoResizeRows或AutoResizeRow指定DataGridViewAutoSizeRowMode.AllCells 時,可以省去引數。
列Header的高度或行Header和寬度自動調整
列Header的高度和行Header的寬度的自動調整,可以使用DataGridView.AutoResizeColumnHeadersHeight方法和AutoResizeRowHeadersWidth方法實現。