none
datagridview checkbox問題 RRS feed

  • 問題

  • 我是初學者,想問datagridview裡,列中的checkbox被勾選時該列背景會變黃色,取消勾選時該列背景會變白色

    我的grid name : RebateCategoryDataGridView

          checkbox name : chk_1

    Private Sub RebateCategoryDataGridView_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles RebateCategoryDataGridView.CellContentClick

            If RebateCategoryDataGridView.chk_1.checked = True Then
               ??  

            End If

    End Sub

    1.底線那行有錯,不知要如何改?

    2.問號底線要插入??

    謝謝

    2015年11月27日 上午 05:20

解答

所有回覆

  • 試試看:

    var oCell = RebateCategoryDataGridView.Rows[e.RowIndex].Cells[CheckBox欄位的編號] as DataGridViewCheckBoxCell;

    if (oCell.Value == cell.TrueValue)

    2015年11月27日 上午 05:34
  • 2015年11月27日 上午 09:15
  • 試試看:

    var oCell = RebateCategoryDataGridView.Rows[e.RowIndex].Cells[CheckBox欄位的編號] as DataGridViewCheckBoxCell;

    if (oCell.Value == cell.TrueValue)

    sorry,我是用VB.NET

    Private Sub RebateCategoryDataGridView_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles RebateCategoryDataGridView.CellClick
         If ((e.ColumnIndex = 0) AndAlso (e.RowIndex > -1)) Then         
                If RebateCategoryDataGridView.Rows(e.RowIndex).Cells(0).Value = True Then
    RebateCategoryDataGridView.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.Yellow
              Else
    RebateCategoryDataGridView.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.White              
              End If
                MessageBox.Show("第b" & RebateCategoryDataGridView.CurrentRow.Cells(0).Value & "列")           
        End If
    End Sub

    執行時,第1次click第1筆checkbox時出現第b列,打勾出現;第2次click第1筆(同一筆)checkbox時出現第b列,打勾消失;

    第3次click第1筆checkbox時出現第b列(同一筆),打勾出現;第4次click第2筆checkbox時出現第b列(不同筆),打勾出現;

    第5次click第2筆checkbox時出現第b列(同一筆),打勾消失;第6次click第1筆checkbox時出現第bTrue列(不同筆),打勾消失,該行背景變黃色;

    結論是:
    1.在同一筆(row)打勾或取消打勾都沒產生變化
    2.切換不同筆(row)打勾時會發生打勾時變白色,取消打勾時變黃色(會抓上次該筆checkbox舊的狀態)
    勾選完後RebateCategoryDataGridView.refresh() 都無效
    測試二星期了都無法解決~麻煩幫忙,謝謝


    2015年12月4日 上午 09:22
  • 試試看:

    var oCell = RebateCategoryDataGridView.Rows[e.RowIndex].Cells[CheckBox欄位的編號] as DataGridViewCheckBoxCell;

    if (oCell.Value == cell.TrueValue)

    sorry,我是用VB.NET

    Private Sub RebateCategoryDataGridView_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles RebateCategoryDataGridView.CellClick
         If ((e.ColumnIndex = 0) AndAlso (e.RowIndex > -1)) Then         
                If RebateCategoryDataGridView.Rows(e.RowIndex).Cells(0).Value = True Then
    RebateCategoryDataGridView.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.Yellow
              Else
    RebateCategoryDataGridView.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.White              
              End If
                MessageBox.Show("第b" & RebateCategoryDataGridView.CurrentRow.Cells(0).Value & "列")           
        End If
    End Sub

    執行時,第1次click第1筆checkbox時出現第b列,打勾出現;第2次click第1筆(同一筆)checkbox時出現第b列,打勾消失;

    第3次click第1筆checkbox時出現第b列(同一筆),打勾出現;第4次click第2筆checkbox時出現第b列(不同筆),打勾出現;

    第5次click第2筆checkbox時出現第b列(同一筆),打勾消失;第6次click第1筆checkbox時出現第bTrue列(不同筆),打勾消失,該行背景變黃色;

    結論是:
    1.在同一筆(row)打勾或取消打勾都沒產生變化
    2.切換不同筆(row)打勾時會發生打勾時變白色,取消打勾時變黃色(會抓上次該筆checkbox舊的狀態)
    勾選完後RebateCategoryDataGridView.refresh() 都無效
    測試二星期了都無法解決~麻煩幫忙,謝謝


    改貼至 CellValueChanged  事件經測試已解決,謝謝 tihs & 亂馬客花時間幫忙~非常感激
    2015年12月5日 上午 07:19