'行テンプレートのセルスタイルの背景色を黄色にする DataGridView1.DefaultCellStyle.BackColor = Color.Yellow 25. DataGridView新追加行单元格默认值设置 [VB.NET]
'DefaultValuesNeededイベントハンドラ
Private Sub DataGridView1_DefaultValuesNeeded(ByVal sender As Object, _ ByVal e As DataGridViewRowEventArgs) _ Handles DataGridView1.DefaultValuesNeeded 'セルの既定値を指定する e.Row.Cells(\= 0 e.Row.Cells(\= \End Sub
DataGridView中输入错误数据的处理(五) 26. DataGridView单元格数据错误标签表示 27. DataGridView单元格内输入值正确性判断 28. DataGridView单元格输入错误值事件的捕获
26. DataGridView单元格数据错误标签表示
VB.NET]
'(0, 0)のセルにエラーアイコンを表示する
DataGridView1(0, 0).ErrorText = \セルの値を確認してください。\'インデックスが3の行にエラーアイコンを表示する
DataGridView1.Rows(3).ErrorText = \負の値は入力できません。\[C#]
//(0, 0)のセルにエラーアイコンを表示する
DataGridView1[0, 0].ErrorText = \セルの値を確認してください。\//インデックスが3の行にエラーアイコンを表示する
DataGridView1.Rows[3].ErrorText = \負の値は入力できません。\
在大量单元格需要错误提示时,也可以用CellErrorTextNeeded、RowErrorTextNeeded事件 [VB.NET]
'CellErrorTextNeededイベントハンドラ
Private Sub DataGridView1_CellErrorTextNeeded(ByVal sender As Object, _ ByVal e As DataGridViewCellErrorTextNeededEventArgs) _ Handles DataGridView1.CellErrorTextNeeded
Dim dgv As DataGridView = CType(sender, DataGridView) 'セルの値が負の整数であれば、エラーアイコンを表示する Dim cellVal As Object = dgv(e.ColumnIndex, e.RowIndex).Value If TypeOf cellVal Is Integer AndAlso CInt(cellVal) < 0 Then e.ErrorText = \負の整数は入力できません。\ End If
End Sub
'RowErrorTextNeededイベントハンドラ
Private Sub DataGridView1_RowErrorTextNeeded(ByVal sender As Object, _ ByVal e As DataGridViewRowErrorTextNeededEventArgs) _ Handles DataGridView1.RowErrorTextNeeded
Dim dgv As DataGridView = CType(sender, DataGridView)
If dgv(\ dgv(\e.RowIndex).Value Is DBNull.Value Then e.ErrorText = _
\少なくともColumn1とColumn2のどちらかには値を入力してください。\ End If End Sub [C#]
//CellErrorTextNeededイベントハンドラ
private void DataGridView1_CellErrorTextNeeded(object sender, DataGridViewCellErrorTextNeededEventArgs e) {
DataGridView dgv = (DataGridView)sender;
//セルの値が負の整数であれば、エラーアイコンを表示する object cellVal = dgv[e.ColumnIndex, e.RowIndex].Value; if (cellVal is int && ((int)cellVal) < 0) {
e.ErrorText = \負の整数は入力できません。\ } }
//RowErrorTextNeededイベントハンドラ
private void DataGridView1_RowErrorTextNeeded(object sender, DataGridViewRowErrorTextNeededEventArgs e) {
DataGridView dgv = (DataGridView)sender;
if (dgv[\ dgv[\e.RowIndex].Value == DBNull.Value) {
e.ErrorText =
\少なくともColumn1とColumn2のどちらかには値を入力してください。\ } }
27. DataGridView单元格内输入值正确性判断 [VB.NET]
'CellValidatingイベントハンドラ
Private Sub DataGridView1_CellValidating(ByVal sender As Object, _ ByVal e As DataGridViewCellValidatingEventArgs) _ Handles DataGridView1.CellValidating
Dim dgv As DataGridView = CType(sender, DataGridView) If dgv.Columns(e.ColumnIndex).Name = \AndAlso _ e.FormattedValue.ToString() = \Then '行にエラーテキストを設定 dgv.Rows(e.RowIndex).ErrorText = \値が入力されていません。\ '入力した値をキャンセルして元に戻すには、次のようにする 'dgv.CancelEdit()
'キャンセルする e.Cancel = True End If End Sub
'CellValidatedイベントハンドラ
Private Sub DataGridView1_CellValidated(ByVal sender As Object, _ ByVal e As DataGridViewCellEventArgs) _ Handles DataGridView1.CellValidated
Dim dgv As DataGridView = CType(sender, DataGridView) 'エラーテキストを消す
dgv.Rows(e.RowIndex).ErrorText = Nothing End Sub [C#]
//CellValidatingイベントハンドラ
private void DataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) {
DataGridView dgv = (DataGridView)sender;
if (dgv.Columns[e.ColumnIndex].Name == \ e.FormattedValue.ToString() == \ {
//行にエラーテキストを設定 dgv.Rows[e.RowIndex].ErrorText = \値が入力されていません。\ //入力した値をキャンセルして元に戻すには、次のようにする //dgv.CancelEdit(); //キャンセルする e.Cancel = true; } }
//CellValidatedイベントハンドラ
private void DataGridView1_CellValidated(object sender, DataGridViewCellEventArgs e) {
DataGridView dgv = (DataGridView)sender; //エラーテキストを消す
dgv.Rows[e.RowIndex].ErrorText = null; }
28. DataGridView单元格输入错误值事件的捕获 [VB.NET]
'DataErrorイベントハンドラ
Private Sub DataGridView1_DataError(ByVal sender As Object, _ ByVal e As DataGridViewDataErrorEventArgs) _ Handles DataGridView1.DataError If Not (e.Exception Is Nothing) Then MessageBox.Show(Me, _ String.Format(\{1}) のセルでエラーが発生しました。\ vbCrLf + vbCrLf + \説明: {2}\ e.ColumnIndex, e.RowIndex, e.Exception.Message), _ \エラーが発生しました\ MessageBoxButtons.OK, _
MessageBoxIcon.Error) End If End Sub [C#]
//DataErrorイベントハンドラ
private void DataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e) {
if (e.Exception != null) {
MessageBox.Show(this, string.Format(\{1}) のセルでエラーが発生しました。\\n\\n説明: {2}\ e.ColumnIndex, e.RowIndex, e.Exception.Message), \エラーが発生しました\ MessageBoxButtons.OK, MessageBoxIcon.Error); } }
输入错误值时返回原先数据 [VB.NET]
'DataErrorイベントハンドラ
Private Sub DataGridView1_DataError(ByVal sender As Object, _ ByVal e As DataGridViewDataErrorEventArgs) _ Handles DataGridView1.DataError e.Cancel = False End Sub [C#]
//DataErrorイベントハンドラ
private void DataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e) {
e.Cancel = false; }
DataGridView控件用法合集(六)
29. DataGridView行排序(点击列表头自动排序的设置) 30. DataGridView自动行排序(新追加值也会自动排序) 31. DataGridView自动行排序禁止情况下的排序 32. DataGridView指定列指定排序
29. DataGridView行排序(点击列表头自动排序的设置) [VB.NET]
'並び替えができないようにする
For Each c As DataGridViewColumn In DataGridView1.Columns c.SortMode = DataGridViewColumnSortMode.NotSortable Next c
30. DataGridView自动行排序(新追加值也会自动排序) [VB.NET]
'フォームのLoadイベントハンドラ
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load '自動的に並び替えられるようにする
Dim c As DataGridViewColumn
For Each c In DataGridView1.Columns c.SortMode = DataGridViewColumnSortMode.Automatic Next c End Sub
'Button1のClickイベントハンドラ
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click If DataGridView1.CurrentCell Is Nothing Then Return End If
'並び替える列を決める
Dim sortColumn As DataGridViewColumn = _ DataGridView1.CurrentCell.OwningColumn '並び替えの方向(昇順か降順か)を決める Dim sortDirection As System.ComponentModel.ListSortDirection = _ System.ComponentModel.ListSortDirection.Ascending If Not (DataGridView1.SortedColumn Is Nothing) AndAlso _
DataGridView1.SortedColumn.Equals(sortColumn) Then sortDirection = IIf(DataGridView1.SortOrder = SortOrder.Ascending, _ System.ComponentModel.ListSortDirection.Descending, _ System.ComponentModel.ListSortDirection.Ascending) End If
'並び替えを行う
DataGridView1.Sort(sortColumn, sortDirection) End Sub
31. DataGridView自动行排序禁止情况下的排序 'ColumnHeaderMouseClickイベントハンドラ
Private Sub DataGridView1_ColumnHeaderMouseClick(ByVal sender As Object, _ ByVal e As DataGridViewCellMouseEventArgs) _ Handles DataGridView1.ColumnHeaderMouseClick Dim clickedColumn As DataGridViewColumn = _ DataGridView1.Columns(e.ColumnIndex) If clickedColumn.SortMode <> DataGridViewColumnSortMode.Automatic Then Me.SortRows(clickedColumn, True) End If End Sub
'RowsAddedイベントハンドラ
Private Sub DataGridView1_RowsAdded(ByVal sender As Object, _ ByVal e As DataGridViewRowsAddedEventArgs) _ Handles DataGridView1.RowsAdded Me.SortRows(DataGridView1.SortedColumn, False) End Sub
'CellValueChangedイベントハンドラ
Private Sub DataGridView1_CellValueChanged(ByVal sender As Object, _ ByVal e As DataGridViewCellEventArgs) _ Handles DataGridView1.CellValueChanged
If Not (DataGridView1.SortedColumn Is Nothing) AndAlso _ e.ColumnIndex = DataGridView1.SortedColumn.Index Then Me.SortRows(DataGridView1.SortedColumn, False)