簡體   English   中英

Datagridview不會更改第一行的復選框(vb.net)

[英]Datagridview won't change checkbox of first row (vb.net)

我有一個datagridview(這里稱為cameraTable)。 datagridview的一列僅是復選框。 我有一個按鈕,單擊該按鈕將選中列中的所有框,也就是全選。 這是代碼:

Private Sub btnSelectAll_Click(sender As Object, e As EventArgs) Handles btnSelectAll.Click

    For Each row As DataGridViewRow In cameraTable.Rows
        DirectCast(row.Cells("CheckBox"), DataGridViewCheckBoxCell).Value = _
            True
    Next
End Sub

我遇到的問題是,初始框(即第零行)永遠不會更改為選中狀態。 我嘗試了這些:

DirectCast(cameraTable(0, 0), DataGridViewCheckBoxCell).Value = True ' doesn't work 
cameraTable.Rows(0).Cells(0).Value = True ' doesn't work 

都不會將復選框更改為選中狀態,但是該列中的其他行不會出現問題。 我什至做過一個msgbox,可以打印出該值,結果是“ True”。 因此,復選框的值已更改,但datagridview中的復選框仍未選中。 有任何想法嗎?

感謝您的所有幫助!

-K

對於當前選定的行/單元,該數據網格將不會獲得INotifyPropertyChanged事件(或將不會處理它們)。 如果您還有其他可編輯的列,請將焦點所在的列移至該列。

如果所有其他方法均失敗,請在設置值之后通過設置數據源= none來重新加載網格,然后返回到原來的狀態。

史蒂夫是對的。 我所做的是,當單擊復選框時,將焦點設置到該行的另一個單元格(我的dgv設置為FullRowSelect):

Private Sub dgv_CellContentClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv.CellContentClick
  If e.ColumnIndex = iCBColIDX Then
    dgv.CurrentCell = dgv.Rows(e.RowIndex).Cells("sts")
  End If
End Sub

使您的復選框列的寬度為20,而不是18。

不,我不知道為什么,但是有幫助。

謝謝這個人

PS。 這不是在開玩笑,而是一個錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM