-1

私はプログラムを持っています、そしてそれはこのように見えます

ここに画像の説明を入力

チェックが入っていて赤い色の値に注目してください。

セルをクリックするとしましょう(checkboxcolumn)

セルをクリックすると、Msgbox に最初のメッセージが表示されますAre you you want to update changes?

クリックYesすると、プログラムは現在の値を確認し、次のように更新します。

If value = yes then
   value = No
ElseIf value = no then
   value = Yes
end if

msgbox で選択するNOと、現在のセルの値は変わりません。

ここに私のコードがあります

If (e.ColumnIndex = 1 AndAlso e.RowIndex >= 0) Then
    Dim value = DirectCast(DataGridView1(e.ColumnIndex, e.RowIndex).FormattedValue, Nullable(Of Boolean))
    Dim result = MessageBox.Show("Are you sure to uncheck item?", "", MessageBoxButtons.YesNoCancel)
    If (value.HasValue AndAlso value = True) Then
        If (result = System.Windows.Forms.DialogResult.Yes) Then
            If DataGridView1(e.ColumnIndex, e.RowIndex).Value = True Then
                DataGridView1(e.ColumnIndex, e.RowIndex).Value = False
            Else
                DataGridView1(e.ColumnIndex, e.RowIndex).Value = True
            End If
        ElseIf (result = System.Windows.Forms.DialogResult.No) Then
        End If
    Else
    End If
End If

私の質問はです。

メッセージ ボックスで [はい] をクリックしたときに、セルの値を確認し、セルの値を逆にするにはどうすればよいですか? メッセージボックスで [いいえ] をクリックすると、値が保持されるか、元の値に戻ります。

上記のコードを試してみましたが、動作していないようです

TYSM

4

1 に答える 1

1

次の基準を使用できます。

Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, _
    ByVal e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
    If (e.ColumnIndex = 0 AndAlso e.RowIndex >= 0) Then
        Dim value = DirectCast(DataGridView1(e.ColumnIndex, e.RowIndex).FormattedValue, _
                               Nullable(Of Boolean))
        Dim result = MessageBox.Show("Are you sure to change vaule?", "", _
                                     MessageBoxButtons.YesNoCancel)
        If (result = System.Windows.Forms.DialogResult.Yes) Then
            If (value.HasValue AndAlso value = True) Then
                DataGridView1(e.ColumnIndex, e.RowIndex).Value = False
            Else
                DataGridView1(e.ColumnIndex, e.RowIndex).Value = True
            End If
        End If
    End If
End Sub

上記のコードでは、ユーザーに確認メッセージを表示し、ユーザーが選択した場合Yes、セルの値を元に戻しました。

上記のコードではe.ColumnIndex = 0、最初の列の確認を表示していました。たとえば、他の基準が必要になる場合がありますe.ColumnIndex = 1。または別の例として(e.ColumnIndex >=1 AndAlso e.ColumnIndex <=13)

e.RowIndex >= 0イベントがヘッダー セルではなくデータ セルに対して処理されるようにします。

于 2016-09-17T14:24:27.130 に答える