【问题标题】:selecting checkbox inside datagridview c#在datagridview c#中选择复选框
【发布时间】:2012-11-09 08:26:00
【问题描述】:

我在 datagridview 中有一个下拉列表、一个按钮和一个复选框。

我只是在 datagridview 上手动创建了一个复选框列。 (这里是代码)

DataGridViewCheckBoxColumn CheckboxColumn = new DataGridViewCheckBoxColumn();
            CheckBox chk = new CheckBox();
            CheckboxColumn.Width = 20;
            DataGrid1.Columns.Add(CheckboxColumn);

这是程序。
第 1 步:用户将选择复选框上的项目。
第 2 步:用户将在下拉列表中选择项目。
第 3 步:用户将单击按钮,它将更改项目名称
在下拉列表中选择的项目之前的复选框上。

这是我的问题 点击按钮后,什么也没有发生。

这是我的代码。

private void button1_Click(object sender, EventArgs e)
        {
    int x = 0;
                foreach (DataGridViewRow item in this.DataGrid1.SelectedRows)
                {
                    DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)item.Cells[1];
                    if (chk.Selected)
                    {
                    // codes here
                    }
                    else
                    {
                    //code here
                    }
                }
                x = x + 1;
         }

【问题讨论】:

  • button1_Click 事件触发了吗?如果不是,您可能没有将事件处理程序链接到按钮单击事件。
  • 是的,它正在发射。当我使用断点时它不会进入条件。
  • this.DataGrid1.SelectedRows.Count 的值是多少? chk 变量的目的是什么。好像没用。

标签: c# winforms datagridview


【解决方案1】:

* 已编辑 **

我已经对此进行了测试,它绝对有效。将其复制并粘贴到一个新项目中并使用它。它应该可以帮助你到达你需要去的地方。

   private void Form1_Load(object sender, EventArgs e)
    {

        DataGridViewCheckBoxColumn checkBox = new DataGridViewCheckBoxColumn(true);
        checkBox.HeaderText = "T/F";
        dataGridView1.Columns.Add(checkBox);

    }

    private void button1_Click(object sender, EventArgs e)
    {
        foreach (DataGridViewRow row in dataGridView1.SelectedRows)
        {

            DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)row.Cells[0];

            if (Convert.ToBoolean(chk.Value) == true)
            {
                MessageBox.Show("Value Is True");
            }

        }
    }

【讨论】:

  • CheckState.Equals 有错误,即使我声明 CheckState CheckState = default(CheckState);
【解决方案2】:

我建议的第一件事是:

DataGrid1.EndEdit();

从那以后,我经历过,如果在从网格列检索复选框值之前缺少此行,有时输入不会按预期显示。

所以是这样的:

private void button1_Click(object sender, EventArgs e)
{
    int x = 0;
    foreach (DataGridViewRow item in this.DataGrid1.SelectedRows)
    {
        DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)item.Cells[1];

        if (chk.Value)
        {
              // codes here for checked condition
        }
        else
        {
              //code here  for UN-checked condition
        }
      }
     x = x + 1;
 }

【讨论】:

    猜你喜欢
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多