4

ユーザーが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

ユーザーがグリッドをクリックしてからフォーム内の別の場所をクリックした場合に、これが実行されないようにする方法が必要なようです。

4

1 に答える 1

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

役に立ったかどうか教えてください。=)

于 2012-06-20T13:19:56.057 に答える