1. 程式人生 > >DataGridView列的寬度、行的高度自動調整

DataGridView列的寬度、行的高度自動調整

注意:DataGridView控制元件是從.NET Framework 2.0版本開始追加的。

介紹一下DataGridView列的寬度和行的高度,根據單元格或Header的內容(一般是內容全部被表示)自動調整的方法。

內容變更時自動調整

列的寬度自動調整

DataGridView列的寬度自動調整,可以使用DataGridView.AutoSizeColumnsMode屬性實現。

下面的程式碼就是列的寬度根據Header和所有單元格的內容自動調整的。

[C#]

//根據Header和所有單元格的內容自動調整列的寬度 DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

DataGridViewAutoSizeColumnsMode列舉的成員如下所示(是從MSDN「

DataGridViewAutoSizeColumnsMode 列舉」引用的)。

DataGridViewAutoSizeColumnsMode成員名稱 說明
AllCells 列寬調整到適合列中所有單元格(包括標頭單元格)的內容。
AllCellsExceptHeader 列寬調整到適合列中除標頭單元格以外所有單元格內容。
ColumnHeader 列寬調整到適合列標頭單元格的內容。
DisplayedCells 列寬調整到適合位於螢幕上當前顯示的行中的列的所有單元格(包括標頭單元格)的內容。
DisplayedCellsExceptHeader 列寬調整到適合位於螢幕上當前顯示的列中的列的所有單元格(不包括標頭單元格)的內容。
Fill 列寬調整到使所有列寬精確填充控制元件的顯示區域,要求使用水平滾動的目的只是保持列寬大於DataGridViewColumn.MinimumWidth屬性的值。相對列寬由相對 DataGridViewColumn.FillWeight屬性值決定。
None 列寬不會自動調整。

行高的自動調整

DataGridView行的高度自動調整,可以使用DataGridView1.AutoSizeRowsMode屬性實現。

[C#]

//根據Header和所有單元格的內容自動調整行的高度 DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;

DataGridViewAutoSizeRowsMode列舉的成員如下所示(是從MSDN「

DataGridViewAutoSizeRowsMode 列舉」引用的)。

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方法實現。

[C#]

//所有列Header的高度自動調整 DataGridView1.AutoResizeColumnHeadersHeight(); //行Header的寬度自動調整 DataGridView1.AutoResizeRowHeadersWidth( DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);