画面イメージ
セルの入力値が不正の場合、ErrorTextを設定する
VB
Private Sub DataGridView1_CellValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles DataGridView1.CellValidating
Dim newValue As String = e.FormattedValue.ToString()
Select Case DataGridView1.Columns(e.ColumnIndex).Name
Case "ProductName"
If newValue = "" Then
DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).ErrorText = "商品名を入力してください。"
Else
DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).ErrorText = ""
End If
Case "Count"
If Not IsNumeric(newValue) Then
DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).ErrorText = "数値を入力してください。"
Else
DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).ErrorText = ""
End If
End Select
End Sub
セルにErrorTextが設定されている場合、背景色を変更する
VB
Private Sub DataGridView1_CellErrorTextChanged(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellErrorTextChanged
Dim errorText As String = DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).ErrorText
' エラーメッセージの内容に応じて、UIを更新
If String.IsNullOrEmpty(errorText) Then
' エラーがない場合の処理
DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Style.BackColor = Color.White
Else
' エラーがある場合の処理
DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Style.BackColor = Color.Red
End If
End Sub
動作確認用コード
VB
Public G_dtOrder As New DataTable
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
With G_dtOrder
.Columns.Add("OrderID", GetType(String))
.Columns.Add("ProductName", GetType(String))
.Columns.Add("Count", GetType(String))
.Rows.Add("1", "にんじん", "10")
.Rows.Add("2", "きゃべつ", "20")
.Rows.Add("3", "きゅうり", "30")
.Rows.Add("4", "たまねぎ", "40")
End With
With DataGridView1
.DataSource = G_dtOrder
.AllowUserToAddRows = False
End With
End Sub
コメント