0

以下は、vb.net で datagridview エラーを処理するために作成されたイベント ハンドラーです。どのセルがエラーをスローしたかを特定し、それに応じて適切なエラーメッセージを表示したい.たとえば、ユーザーがデータグリッドビューの特定のセルに正しい形式で日付を入力しなかった場合、日付が含まれていないというメッセージを表示したい正しい format.following は、グリッドビューの初期化コードとエラー ハンドラです。

    Private Sub gridintialize()
    Dim Itemcode As New DataGridViewColumn
    Dim pkt As New DataGridViewColumn
    Dim loose As New DataGridViewColumn 
    Dim desp As New DataGridViewColumn
    Dim type As New DataGridViewColumn
    Dim uom As New DataGridViewColumn
    'Dim batch_no As New DataGridViewColumn
    Dim expiry_date As New DataGridViewColumn
    Dim qty As New DataGridViewColumn
    Dim unit_price As New DataGridViewColumn
    Dim disc As New DataGridViewColumn
    Dim grossamt As New DataGridViewColumn
    Dim disc_p As New DataGridViewColumn
    Dim netamt As New DataGridViewColumn

    With Itemcode
        .Name = "Itemcode"
        .ValueType = GetType(String)
        .HeaderText = "ITEM CODE"
        .Width = 195
        .CellTemplate = New DataGridViewTextBoxCell
    End With

    With desp
        .Name = "desc"
        .ValueType = GetType(String)
        .HeaderText = "Description"
        .Width = 300
        .CellTemplate = New DataGridViewTextBoxCell
    End With
    With type
        .Name = "type"
        .ValueType = GetType(String)
        .HeaderText = "Type"
        .Width = 50
        .CellTemplate = New DataGridViewTextBoxCell
    End With
    With uom
        .Name = "uom"
        .ValueType = GetType(String)
        .HeaderText = "UOM"
        .Width = 60
        .CellTemplate = New DataGridViewTextBoxCell
    End With
    With expiry_date
        .Name = "expiry"
        .ValueType = GetType(Date)
        .HeaderText = "Expiry"
        .Width = 70
        .CellTemplate = New DataGridViewTextBoxCell
    End With
    With qty
        .Name = "qty"
        .ValueType = GetType(Integer)
        .HeaderText = "Qty"
        .Width = 70
        .CellTemplate = New DataGridViewTextBoxCell
    End With
    With unit_price
        .Name = "unitp"
        .ValueType = GetType(Double)
        .HeaderText = "Unit Price"
        .Width = 70
        .CellTemplate = New DataGridViewTextBoxCell
    End With
    With disc
        .Name = "disc"
        .ValueType = GetType(Double)
        .HeaderText = "Discount"
        .Width = 70
        .CellTemplate = New DataGridViewTextBoxCell
    End With

    With disc_p
        .Name = "discp"
        .ValueType = GetType(Double)
        .HeaderText = "Disc(%)"
        .Width = 70
        .CellTemplate = New DataGridViewTextBoxCell

    End With
    With grossamt
        .Name = "gamt"
        .ValueType = GetType(Double)
        .HeaderText = "Gross Amount"
        .Width = 70
        .ReadOnly = True
        .CellTemplate = New DataGridViewTextBoxCell
    End With
    With netamt
        .Name = "namt"
        .ValueType = GetType(Double)
        .HeaderText = "Net Amount"
        .Width = 80
        .ReadOnly = True
        .CellTemplate = New DataGridViewTextBoxCell
    End With
    With pkt
        .Name = "pkt"
        .HeaderText = "PKT"
        .Width = 45
        .CellTemplate = New DataGridViewTextBoxCell
    End With
    With loose
        .Name = "loose"
        .HeaderText = "Loose"
        .Width = 45
        .CellTemplate = New DataGridViewTextBoxCell

    End With
    With dgsalesitem
        .Columns.Add(pkt)
        .Columns.Add(loose)
        .Columns.Add(Itemcode)
        .Columns.Add(desp)
        .Columns.Add(type)
        .Columns.Add(uom)
        .Columns.Add(expiry_date)
        .Columns.Add(qty)
        .Columns.Add(unit_price)
        .Columns.Add(grossamt)
        .Columns.Add(disc_p)
        .Columns.Add(disc)
        .Columns.Add(netamt)





    End With
End Sub

Private Sub dgsalesitem_DataError(ByVal sender As Object, ByVal e As   System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles dgsalesitem.DataError
    MsgBox("Please enter data in correct format", vbInformation, "POS SYSTEM")

End Sub
4

1 に答える 1

0

このすべての情報をe引数から取得できます。

Private Sub dgsalesitem_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles dgsalesitem.DataError
    Dim curException As Exception = e.Exception
    Dim curCell As DataGridViewCell = dgsalesitem(e.ColumnIndex, e.RowIndex)
End Sub

アップデート

ShowCellErrors特定のセルを強調表示するには、DataGridViewのプロパティを true に設定するだけです。または、指定されたセルのフォーマットに影響を与えます。次に例を示します。

curCell.Style.BackColor = Color.Yellow 'Setting the background color of the cell to yello
于 2013-11-13T09:00:57.233 に答える