vb.net - 如何在 CellValueChanged 事件后为 DataGridView 中的已编辑单元格添加红色边框
问题描述
我有一个 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
此外,一旦保存更改,这些单元格将需要再次删除它们的边框以恢复默认值。这将通过 Button 或 Form 正在关闭并且用户选择“是”时发生:
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 事件中完成,还是应该根据更新的单元格索引作为单独的函数完成?
解决方案
请参阅此链接如何在 DataGridView 单元格被编辑时在其周围绘制边框?
或者你可以试试这个但需要改进代码
Dim rec As New Drawing.Rectangle
rec = DataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, False)
DataGridView1.CreateGraphics.DrawRectangle(New Pen(Color.Red, 2), CInt(rec.X), CInt(rec.Y), CInt(rec.Width - 2), CInt(rec.Height - 2))
DataGridView1.EditingControl.BackColor = Color.Red
推荐阅读
- python - Python - 读取每 x 行
- azure - 如何在 Azure Api 管理门户(开发者/发布者门户)的“管理内容”下的页面上添加变量?
- reactjs - 如何使用 redux 实现基于插件的架构
- abaqus - 在 Abaqus/Standard 分析中将初始值(边界条件)写入结果 (.fil) 文件
- python - Django Rest 框架说非必填字段是必需的
- python-3.x - 熊猫和天蓝色:DataFrame to_csv blob
- postgresql - 错误:SQL 插入命令中不存在列“exists”
- node.js - 获取最近 24 小时内更新的密钥列表
- java - 可执行 Jar 中的 Jar:jorg.apache.xmlbeans.XmlOptions.setEntityExpansionLimit(I) org.apache.poi.ooxml.POIXMLTypeLoader。
- java - Apache Flink:奇怪的 FlatMap 行为