2017-09-18 3 views
0

最初の列にチェックボックスを含むDataGridViewがあります。DataGridViewの1つのチェックボックスがオンになっていて、すべてがチェックされていないかどうかを確認する方法

チェックボックスが1つだけチェックされているか、チェックボックスがないかどうかを確認する必要があります。

DataGridViewをループすると、各ボックスのチェックとチェックが外されるたびに真と偽が表示されますが、これは以下のコードで試行したものです。

ボックスの1つがチェックであれば真を返し、チェックされていなければ偽を返すメソッドを作成する必要があります。

私はこれを試しました:それを呼び出すと、実験は異なる関連のDataGridViewクリックイベントです。

Public Function IsContainChecked() As Boolean 

    Dim ch1 As New DataGridViewCheckBoxCell() 
    ch1 = DirectCast(DataGridView1.Rows(DataGridView1.CurrentRow.Index).Cells(0), _ 
     DataGridViewCheckBoxCell) 
    Return CBool(ch1.EditingCellFormattedValue) 

End Function 
+0

なぜオブジェクトを直接キャストする必要がありますか? –

+0

'new'は何かを次の行に再割り当てしないでください。最近、あまりにも多くのことを見ている。 – pinkfloydx33

答えて

-1
Dim checkedCount = DataGridView1.Rows. 
           Cast(Of DataGridViewRow)(). 
           Where(Function(row) Not row.IsNewRow). 
           Count(Function(row) CBool(row.Cells(0).Value)) 

Select Case checkedCount 
    Case 0 
     'No rows are checked. 
    Case 1 
     'One row is checked. 
    Case Else 
     'More than one row is checked. 
End Select 

あなたは、例えば、この方法でそのコードを入れて、あなたが好きな場所にそれを呼び出すことができますCellValueChangedイベントハンドラ内にあります。チェックボックスセルのValueは、クリックするとすぐに変更されません。イベントのドキュメントでは、そのアドレスに対処し、Valueをクリックして強制的に変更する場合の対処方法について説明します。

+0

そして... ***これはOPの問題をどうやって説明するのですか***? OPが彼らが問題を抱えているところを理解していないので、元の投稿の説明なしで答えを投げることは無力です... – Codexer

+0

@Codexer、OPが答えを受け入れたとすれば、私はあなたがそれらの質問をすることができたと思います。 – jmcilhinney

関連する問題