更新されたレコードを監査テーブルに追加する CellValueChanged イベントがあり、このイベント内でセルが更新されたことを示すために、セルの境界線を赤に変更したいと考えています。
Private Sub PL_DGV_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles PL_DGV.CellValueChanged
If isLoaded Then
Dim grid_row As DataRow = Me.DataSet.PL.Rows(e.RowIndex)
Dim Column1 = Variable1
Dim Column2 = grid_row.Item("Column2").ToString().Trim()
Dim Column3 = grid_row.Item("Column3").ToString().Trim()
Dim Updated_column_name = Me.DataSet.PL.Columns(e.ColumnIndex).ColumnName
Dim Updated_value = grid_row.Item(Updated_column_name).ToString()
Dim row As DataRow = Me.DataSet.PL_ChangesLog.NewRow()
row("Column1") = Column1
row("Column2") = Column2
row("Column3") = Column3
row("Column4") = Updated_column_name
row("Column5") = Updated_value
row("timestamp") = DateTime.Now()
row("username") = Environment.UserName()
Me.DataSet.PL_ChangesLog.Rows.Add(row)
Dim new_style = New DataGridViewCellStyle
unsaved_changes = True
End If
End Sub
また、変更を保存したら、これらのセルの境界線を削除してデフォルトに戻す必要があります。これは、ボタンを介して、またはフォームが閉じているときにユーザーが「はい」を選択したときに発生します。
Private Sub PLC_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
If unsaved_changes Then
Dim result = MsgBox("There are unsaved changes within the grid - would you like to save changes?", MessageBoxButtons.YesNoCancel)
If result = DialogResult.Yes Then
ElseIf result = DialogResult.Cancel Then
e.Cancel = True
End If
End If
End Sub
CellValueChanged イベント内で実行することは可能ですか、それとも更新されたセルのインデックスに基づいて別の関数として実行する必要がありますか?