如果用户单击DataGridView底部的空行并将焦点从DataGridView移开,则现在点击的行处于指示对该行进行更改的状态。
是否可以告诉DataGridView取消标记该行是否被更改?
当焦点偏离DataGridView时,是否可以重置此行?
我们正在使用以下事件处理程序来提醒用户,如果“已开票”为空白:
Private Sub dataGridViewPayments_CellValidating(ByVal sender As Object, _
ByVal e As DataGridViewCellValidatingEventArgs) _
Handles DataGridViewPayments.CellValidating
Dim headerText As String = _
DataGridViewPayments.Columns(e.ColumnIndex).HeaderText
' Validate the Invoiced On cell and display the error if it's empty.
'-------------------------------------------------------------------
If (String.IsNullOrEmpty(e.FormattedValue.ToString()) And
headerText.Equals("Invoiced On")) Then
DataGridViewPayments.Rows(e.RowIndex).ErrorText = _
"Please enter an Inoiced On date."
e.Cancel = True
End If
End Sub
如果用户只需点击网格然后点击表单中的其他位置,我们就需要一种方法来阻止执行此操作。
答案 0 :(得分:1)
您可以尝试这样的事情:
Private Sub dg_CellValidating(ByVal sender As Object, ByVal e As DataGridViewCellValidatingEventArgs) Handles dg.CellValidating
Dim headerText As String = dg.Columns(e.ColumnIndex).HeaderText
'Try this --------------------------------------------------------------
Dim vClicked As Boolean = False
If (Control.MouseButtons And MouseButtons.Left) = MouseButtons.Left Then
vClicked = True
End If
'-----------------------------------------------------------------------
'Validate the Invoiced On cell and display the error if it's empty.
'And put vClicked here
If Not vClicked AndAlso (String.IsNullOrEmpty(e.FormattedValue.ToString()) And headerText.Equals("Invoiced On")) Then
dg.Rows(e.RowIndex).ErrorText = "Please enter an Inoiced On date."
e.Cancel = True
End If
End Sub
请告诉我它是否有帮助。 =)