0

更新されたレコードを監査テーブルに追加する 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 イベント内で実行することは可能ですか、それとも更新されたセルのインデックスに基づいて別の関数として実行する必要がありますか?

4

2 に答える 2

0

セルの周りに四角形を適切に描画する方法を理解できませんでしたが、要件のプロバイダーとさらに話し合った後、セルが編集された行が太字フォントに設定されるように設定されました。

次のコードでそれを達成しました:

    Dim DGV_row As DataGridViewRow = PL_DGV.Rows(e.RowIndex)
    Dim new_style As New DataGridViewCellStyle With {
        .Font = New System.Drawing.Font("Segoe UI", 9, FontStyle.Bold)
    }
    DGV_row.DefaultCellStyle = new_style
于 2021-07-27T11:41:08.603 に答える