如何将DataGridView复选框设置为true / false?

时间:2017-12-15 13:23:20

标签: c#

我有一个带有两个复选框的表,我想取消选中其中一个,而另一个复选框(如RadioButton)。

enter image description here

void DataGridView1CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        DataGridViewCheckBoxCell never = dataGridView1.Rows[e.RowIndex].Cells[1] as DataGridViewCheckBoxCell;
        DataGridViewCheckBoxCell once = dataGridView1.Rows[e.RowIndex].Cells[2] as DataGridViewCheckBoxCell;

        bool isNeverChecked = (bool)never.EditedFormattedValue;

        if(isNeverChecked){
            once.Value = "false";
            never.Value = "true";
        }else{
            once.Value = "true";
            never.Value = "false";
        }
        dataGridView1.Refresh();
    }

2 个答案:

答案 0 :(得分:0)

if(checkbox1.isChecked)
 checkbox2.isChecked = false;

与checkbox2相同......

但是你应该将它连接到复选框事件。

此外,如果你使用的是wpf,你可以使用绑定我想

答案 1 :(得分:0)

有类似dgv.Rows[0].Cells[0].Value = true;

的内容
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        DataGridView dgv = new DataGridView();

        public Form1()
        {
            InitializeComponent();
            initours();

            checkone();
        }

        private void checkone()
        {
            dgv.Rows[0].Cells[0].Value = true;//chekc the one in the first row
        }

        private void initours()
        {
            this.Controls.Add(dgv);
            dgv.Dock = DockStyle.Fill;

            dgv.AutoGenerateColumns = false;
            DataGridViewCheckBoxColumn col = new DataGridViewCheckBoxColumn();
            dgv.Columns.Add(col);
            dgv.Rows.Add();
            dgv.Rows.Add();
            dgv.Rows.Add();
            dgv.Rows.Add();
        }
    }
}

或使用其他人建议的数据源。

using System.ComponentModel;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        DataGridView dgv = new DataGridView();
        BindingList<dgvitem> dgvdata = new BindingList<dgvitem>();
        public Form2()
        {
            InitializeComponent();
            initours();


            //add data
            for (int i = 0; i < 10; i++)
            {
                dgvdata.Add(new dgvitem { checkcol = false, col2 = $"col2 row {i}" });
            }


            //check one of them
            dgvdata[2].checkcol = true;

        }

        private void initours()
        {
            this.Controls.Add(dgv);
            dgv.Dock = DockStyle.Fill;
            dgv.DataSource = dgvdata;
        }
    }



    public class dgvitem
    {
        public bool checkcol { get; set; }
        public string col2 { get; set; }
    }
}