Datagridview forcing only one checkbox to be selected in a column

后端 未结 9 1262
野性不改
野性不改 2020-12-21 07:29

How do I force only a single checkbox to be checked in a column of a Datagridview?

相关标签:
9条回答
  • 2020-12-21 07:59
    private void dgvlist_CellContentClick(object sender, DataGridViewCellEventArgs e)  
        {  
            int currentcolumnclicked = e.ColumnIndex;  
            for (int i = 0; i <= dgvlist.Columns.Count - 1; i++)  
            {  
                if (dgvlist.Columns[i] is DataGridViewCheckBoxColumn)  
                {  
                    if (Convert.ToString(dgvlist.CurrentRow.Cells[i].EditedFormattedValue) == "True" && i !=currentcolumnclicked)  
                    {  
                        dgvlist.CurrentRow.Cells[i].Value = false;  
                    }  
                }  
            }  
        }  
    
    0 讨论(0)
  • 2020-12-21 08:01
    private void dgvCaixa_CellContentClick(object sender, DataGridViewCellEventArgs e)
            {
                if ((sender as DataGridView).CurrentCell is DataGridViewCheckBoxCell)
                {
                    foreach (DataGridViewRow row in dgvCaixa.Rows)
                    {
                        if (row.Index != dgvCaixa.CurrentCell.RowIndex && Convert.ToBoolean(row.Cells[e.ColumnIndex].Value) == true)
                        {
                            row.Cells[e.ColumnIndex].Value = false;
                        }
                    }
                }
            }
    
    0 讨论(0)
  • 2020-12-21 08:01

    in vb.net:

    Private Sub DataGridViewJobsList_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridViewJobsList.CellValueChanged
        If TypeOf TryCast(sender, DataGridView).CurrentCell Is DataGridViewCheckBoxCell Then
            Dim cell1 As DataGridViewCell
            cell1 = TryCast(sender, DataGridView).CurrentCell
            If cell1.Value = True Then
                For Each row As DataGridViewRow In TryCast(sender, DataGridView).Rows
                    If row.Index <> cell1.RowIndex AndAlso row.Cells(e.ColumnIndex).Value = "1" Then
                        row.Cells(e.ColumnIndex).Value = False
                    End If
                Next
            End If
        End If
    End Sub
    
    Private Sub DataGridViewJobsList_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) Handles DataGridViewJobsList.CurrentCellDirtyStateChanged
        If Me.DataGridViewJobsList.IsCurrentCellDirty Then
            DataGridViewJobsList.CommitEdit(DataGridViewDataErrorContexts.Commit)
        End If
    End Sub
    
    0 讨论(0)
  • 2020-12-21 08:04
        private void dataGridViewProduit_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            if ((sender as DataGridView).CurrentCell is DataGridViewCheckBoxCell)
            {
                if (Convert.ToBoolean(((sender as DataGridView).CurrentCell as DataGridViewCheckBoxCell).Value))
                {
                    foreach (DataGridViewRow row in (sender as DataGridView).Rows)
                    {
                        if (row.Index != (sender as DataGridView).CurrentCell.RowIndex && Convert.ToBoolean(row.Cells[e.ColumnIndex].Value) == true)
                        {
                            row.Cells[e.ColumnIndex].Value = false;
                        }
                    }
                }
            }
        }
    
        private void dataGridViewClient_CurrentCellDirtyStateChanged(object sender, EventArgs e)
        {
            if (this.dataGridViewClient.IsCurrentCellDirty)
            {
                dataGridViewClient.CommitEdit(DataGridViewDataErrorContexts.Commit);
            }
        }
    
    0 讨论(0)
  • 2020-12-21 08:07
    private void dataGridView3_CellContentClick(object sender, DataGridViewCellEventArgs e)
            {
                if (e.ColumnIndex == 1)
                {
                    try
                    {
                        string val = dataGridView3.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
                        if (val == "False")
                            val = "True";
                        else if (val == "True")
                            val = "False";
                        dataGridView3.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = val;
    
                    for (int i = 0; i < dataGridView3.Rows.Count; i++)
                    {
                        string active = "";
                        if (i != e.RowIndex)
                        {
                            if (val == "False")
                            {
                                dataGridView3.Rows[i].Cells[1].Value = "True";
                                active = "Y";
                            }
                            else if (val == "True")
                            {
                                dataGridView3.Rows[i].Cells[1].Value = "False";
                                active = "N";
                            }
                        }
                        else
                        {
                            if (val == "False")
                                active = "N";
                            else
                                active = "Y";
                        }
    
    
    
    
                    }
    
    
                }
                catch (Exception ex)
                { }
            }
        }
    
    0 讨论(0)
  • 2020-12-21 08:09
     private void grdRegClass_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (grdRegClass.Columns.IndexOf(grdRegClass.Columns["Status"]) == e.ColumnIndex)
            {
                int currentcolumnclicked = e.ColumnIndex;
                int currentrowclicked = e.RowIndex;
                foreach (DataGridViewRow dr in grdRegClass.Rows)
                {
                    dr.Cells[currentcolumnclicked].Value = false;
                }
                grdRegClass.CurrentRow.Cells[currentrowclicked].Value = true;  
            }
        }
    
    0 讨论(0)
提交回复
热议问题