DataGridView的一些技巧

DataGridView的一些技巧 最近一直跟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 ; } } } 18 、数据提交到dataset中 DataSet ds = new DataSet( " MyDataSet " ); ds.Tables[biaom.Trim()].Rows.Clear(); try { for ( int i = 0 ; i < dataGridView1.Rows.Count - 1 ; i ++ ) { DataTable dt = ds.Tables[biaom.Trim()]; DataRow myrow = ds.Tables[biaom.Trim()].NewRow(); for ( int j = 0 ; j < dataGridView1.Columns.Count; j ++ ) { myrow[j] = Convert.ToString(dataGridView1.Rows[i].Cells[j].Value); } ds.Tables[biaom.Trim()].Rows.Add(myrow); } } catch (Exception) { MessageBox.Show( " 输入类型错误! " ); return ; }

你可能感兴趣的:(DataGridView的一些技巧)