DataGridView新特色、常用操作
生活随笔
收集整理的這篇文章主要介紹了
DataGridView新特色、常用操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、自定義列
Customize?Cells?and?Columns?in?the?Windows?Forms?DataGridView?Control?by?Extending?Their?
????Behavior?and?Appearance?
????Host?Controls?in?Windows?Forms?DataGridView?Cells?
????繼承?DataGridViewTextBoxCell?類生成新的Cell類,然后再繼承?DataGridViewColumn?生成新的Column類,并指定
????CellTemplate為新的Cell類。新生成的Column便可以增加到DataGridView中去。
2、自動適應列寬
Programmatically?Resize?Cells?to?Fit?Content?in?the?Windows?Forms?DataGridView?Control?
????Samples:
DataGridView.AutoSizeColumns(DataGridViewAutoSizeColumnCriteria.HeaderAndDisplayedRows); DataGridView.AutoSizeColumn(DataGridViewAutoSizeColumnCriteria.HeaderOnly,2, false); DataGridView.AutoSizeRow(DataGridViewAutoSizeRowCriteria.Columns,2, false); DataGridView.AutoSizeRows(DataGridViewAutoSizeRowCriteria.HeaderAndColumns,0, dataGridView1.Rows.Count, false);
3、可以綁定并顯示對象
????Bind?Objects?to?Windows?Forms?DataGridView?Controls?
4、可以改變表格線條風格
????Change?the?Border?and?Gridline?Styles?in?the?Windows?Forms?DataGridView?Control?
????Samples:
this.dataGridView1.GridColor = Color.BlueViolet; this.dataGridView1.BorderStyle = BorderStyle.Fixed3D; this.dataGridView1.CellBorderStyle = DataGridViewCellBorderStyle.None; this.dataGridView1.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single; this.dataGridView1.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
5、動態改變列是否顯示,和動態改變列的顯示順序
????Change?the?Order?of?the?Columns?in?the?Windows?Forms?DataGridView?Control?
????Samples:
customersDataGridView.Columns["CustomerID"].Visible = false; customersDataGridView.Columns["ContactName"].DisplayIndex = 0; customersDataGridView.Columns["ContactTitle"].DisplayIndex = 1; customersDataGridView.Columns["City"].DisplayIndex = 2; customersDataGridView.Columns["Country"].DisplayIndex = 3; customersDataGridView.Columns["CompanyName"].DisplayIndex = 4;
6、可以在列中顯示圖像
????Display?Images?in?Cells?of?the?Windows?Forms?DataGridView?Control?
????Samples:
Icon treeIcon = new Icon(this.GetType(), "tree.ico"); DataGridViewImageColumn iconColumn = new DataGridViewImageColumn(); iconColumn.Image = treeIcon.ToBitmap(); iconColumn.Name = "Tree"; iconColumn.HeaderText = "Nice tree"; dataGridView1.Columns.Insert(2, iconColumn);
7、格式化顯示內容:
????Format?Data?in?the?Windows?Forms?DataGridView?Control?
????Samples:
this.dataGridView1.Columns["UnitPrice"].DefaultCellStyle.Format = "c"; this.dataGridView1.Columns["ShipDate"].DefaultCellStyle.Format = "d"; this.dataGridView1.DefaultCellStyle.NullValue = "no entry"; this.dataGridView1.DefaultCellStyle.WrapMode = DataGridViewWrapMode.Wrap; this.dataGridView1.Columns["CustomerName"].DefaultCellStyle.Alignment =DataGridViewContentAlignment.MiddleRight;
8、在拖動列的滾動條時可以將指定的列凍結
????Freeze?Columns?in?the?Windows?Forms?DataGridView?Control?
????Samples:將指定列及以前的列固定不動
this.dataGridView1.Columns["AddToCartButton"].Frozen = true;
9、獲取選擇的單元格,行,列
????Get?the?Selected?Cells,?Rows,?and?Columns?in?the?Windows?Forms?DataGridView?Control?
????Samples:
???????見msdn。
10、顯示錄入時出現的錯誤信息
????Handle?Errors?that?Occur?During?Data?Entry?in?the?Windows?Forms?DataGridView?Control?
????Samples:
private void dataGridView1_DataError(object sender,DataGridViewDataErrorEventArgs e) {// If the data source raises an exception when a cell value is // commited, display an error message. if (e.Exception != null &&e.Context == DataGridViewDataErrorContext.Commit){MessageBox.Show("CustomerID value must be unique.");} }
11、大數據量顯示采用Virtual?Mode?
????Implement?Virtual?Mode?in?the?Windows?Forms?DataGridView?Control?
12、設置指定的列只讀
????Make?Columns?in?the?Windows?Forms?DataGridView?Control?Read-Only?
????Samples:
dataGridView1.Columns["CompanyName"].ReadOnly = true;
13、移去自動生成的列
????Remove?Autogenerated?Columns?from?a?Windows?Forms?DataGridView?Control?
????Sample:
dataGridView1.AutoGenerateColumns = true; dataGridView1.DataSource = customerDataSet; dataGridView1.Columns.Remove("Fax");
或:
dataGridView1.Columns["CustomerID"].Visible = false;
14、自定義選擇模式
????Set?the?Selection?Mode?of?the?Windows?Forms?DataGridView?Control?
????Sample:
this.dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; this.dataGridView1.MultiSelect = false;
15、自定義設定光標進入單元格是否編輯模式(編輯模式)
????Specify?the?Edit?Mode?for?the?Windows?Forms?DataGridView?Control
this.dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
16、新行指定默認值
????Specify?Default?Values?for?New?Rows?in?the?Windows?Forms?DataGridView?Control?
????Sample:
private void dataGridView1_DefaultValuesNeeded(object sender, System.Windows.Forms.DataGridViewRowEventArgs e) {e.Row.Cells["Region"].Value = "WA";e.Row.Cells["City"].Value = "Redmond";e.Row.Cells["PostalCode"].Value = "98052-6399";e.Row.Cells["Region"].Value = "NA";e.Row.Cells["Country"].Value = "USA";e.Row.Cells["CustomerID"].Value = NewCustomerId(); }
17、數據驗證
????Validate?Data?in?the?Windows?Forms?DataGridView?Control?
????Samples:
private void dataGridView1_CellValidating(object sender,DataGridViewCellValidatingEventArgs e) {// Validate the CompanyName entry by disallowing empty strings. if (dataGridView1.Columns[e.ColumnIndex].Name == "CompanyName"){if (e.FormattedValue.ToString() == String.Empty){dataGridView1.Rows[e.RowIndex].ErrorText ="Company Name must not be empty";e.Cancel = true;}} }
Customize?Cells?and?Columns?in?the?Windows?Forms?DataGridView?Control?by?Extending?Their?
????Behavior?and?Appearance?
????Host?Controls?in?Windows?Forms?DataGridView?Cells?
????繼承?DataGridViewTextBoxCell?類生成新的Cell類,然后再繼承?DataGridViewColumn?生成新的Column類,并指定
????CellTemplate為新的Cell類。新生成的Column便可以增加到DataGridView中去。
2、自動適應列寬
Programmatically?Resize?Cells?to?Fit?Content?in?the?Windows?Forms?DataGridView?Control?
????Samples:
DataGridView.AutoSizeColumns(DataGridViewAutoSizeColumnCriteria.HeaderAndDisplayedRows); DataGridView.AutoSizeColumn(DataGridViewAutoSizeColumnCriteria.HeaderOnly,2, false); DataGridView.AutoSizeRow(DataGridViewAutoSizeRowCriteria.Columns,2, false); DataGridView.AutoSizeRows(DataGridViewAutoSizeRowCriteria.HeaderAndColumns,0, dataGridView1.Rows.Count, false);
3、可以綁定并顯示對象
????Bind?Objects?to?Windows?Forms?DataGridView?Controls?
4、可以改變表格線條風格
????Change?the?Border?and?Gridline?Styles?in?the?Windows?Forms?DataGridView?Control?
????Samples:
this.dataGridView1.GridColor = Color.BlueViolet; this.dataGridView1.BorderStyle = BorderStyle.Fixed3D; this.dataGridView1.CellBorderStyle = DataGridViewCellBorderStyle.None; this.dataGridView1.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single; this.dataGridView1.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
5、動態改變列是否顯示,和動態改變列的顯示順序
????Change?the?Order?of?the?Columns?in?the?Windows?Forms?DataGridView?Control?
????Samples:
customersDataGridView.Columns["CustomerID"].Visible = false; customersDataGridView.Columns["ContactName"].DisplayIndex = 0; customersDataGridView.Columns["ContactTitle"].DisplayIndex = 1; customersDataGridView.Columns["City"].DisplayIndex = 2; customersDataGridView.Columns["Country"].DisplayIndex = 3; customersDataGridView.Columns["CompanyName"].DisplayIndex = 4;
6、可以在列中顯示圖像
????Display?Images?in?Cells?of?the?Windows?Forms?DataGridView?Control?
????Samples:
Icon treeIcon = new Icon(this.GetType(), "tree.ico"); DataGridViewImageColumn iconColumn = new DataGridViewImageColumn(); iconColumn.Image = treeIcon.ToBitmap(); iconColumn.Name = "Tree"; iconColumn.HeaderText = "Nice tree"; dataGridView1.Columns.Insert(2, iconColumn);
7、格式化顯示內容:
????Format?Data?in?the?Windows?Forms?DataGridView?Control?
????Samples:
this.dataGridView1.Columns["UnitPrice"].DefaultCellStyle.Format = "c"; this.dataGridView1.Columns["ShipDate"].DefaultCellStyle.Format = "d"; this.dataGridView1.DefaultCellStyle.NullValue = "no entry"; this.dataGridView1.DefaultCellStyle.WrapMode = DataGridViewWrapMode.Wrap; this.dataGridView1.Columns["CustomerName"].DefaultCellStyle.Alignment =DataGridViewContentAlignment.MiddleRight;
8、在拖動列的滾動條時可以將指定的列凍結
????Freeze?Columns?in?the?Windows?Forms?DataGridView?Control?
????Samples:將指定列及以前的列固定不動
this.dataGridView1.Columns["AddToCartButton"].Frozen = true;
9、獲取選擇的單元格,行,列
????Get?the?Selected?Cells,?Rows,?and?Columns?in?the?Windows?Forms?DataGridView?Control?
????Samples:
???????見msdn。
10、顯示錄入時出現的錯誤信息
????Handle?Errors?that?Occur?During?Data?Entry?in?the?Windows?Forms?DataGridView?Control?
????Samples:
private void dataGridView1_DataError(object sender,DataGridViewDataErrorEventArgs e) {// If the data source raises an exception when a cell value is // commited, display an error message. if (e.Exception != null &&e.Context == DataGridViewDataErrorContext.Commit){MessageBox.Show("CustomerID value must be unique.");} }
11、大數據量顯示采用Virtual?Mode?
????Implement?Virtual?Mode?in?the?Windows?Forms?DataGridView?Control?
12、設置指定的列只讀
????Make?Columns?in?the?Windows?Forms?DataGridView?Control?Read-Only?
????Samples:
dataGridView1.Columns["CompanyName"].ReadOnly = true;
13、移去自動生成的列
????Remove?Autogenerated?Columns?from?a?Windows?Forms?DataGridView?Control?
????Sample:
dataGridView1.AutoGenerateColumns = true; dataGridView1.DataSource = customerDataSet; dataGridView1.Columns.Remove("Fax");
或:
dataGridView1.Columns["CustomerID"].Visible = false;
14、自定義選擇模式
????Set?the?Selection?Mode?of?the?Windows?Forms?DataGridView?Control?
????Sample:
this.dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; this.dataGridView1.MultiSelect = false;
15、自定義設定光標進入單元格是否編輯模式(編輯模式)
????Specify?the?Edit?Mode?for?the?Windows?Forms?DataGridView?Control
this.dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
16、新行指定默認值
????Specify?Default?Values?for?New?Rows?in?the?Windows?Forms?DataGridView?Control?
????Sample:
private void dataGridView1_DefaultValuesNeeded(object sender, System.Windows.Forms.DataGridViewRowEventArgs e) {e.Row.Cells["Region"].Value = "WA";e.Row.Cells["City"].Value = "Redmond";e.Row.Cells["PostalCode"].Value = "98052-6399";e.Row.Cells["Region"].Value = "NA";e.Row.Cells["Country"].Value = "USA";e.Row.Cells["CustomerID"].Value = NewCustomerId(); }
17、數據驗證
????Validate?Data?in?the?Windows?Forms?DataGridView?Control?
????Samples:
private void dataGridView1_CellValidating(object sender,DataGridViewCellValidatingEventArgs e) {// Validate the CompanyName entry by disallowing empty strings. if (dataGridView1.Columns[e.ColumnIndex].Name == "CompanyName"){if (e.FormattedValue.ToString() == String.Empty){dataGridView1.Rows[e.RowIndex].ErrorText ="Company Name must not be empty";e.Cancel = true;}} }
總結
以上是生活随笔為你收集整理的DataGridView新特色、常用操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 专业ajax解决方案汇集
- 下一篇: Winform 系统调优