如果在DatagridView中选中了上一列,则返回单元格列表

时间:2014-03-06 06:20:22

标签: c# datagridview

我已经检查了不同的代码,但我无法有效使用。我正在尝试检查第1列中的布尔值,如果选中该列,则我需要将第二列中的数据显示在文本/列表框中(如果选中了多个框)。

这就是它的外观

                DataTable dt = new DataTable();
                dt.Columns.Add("Methods",System.Type.GetType("System.String"));
                dt.Columns.Add("Select", System.Type.GetType("System.Boolean"));
                DataRow dr = null;



                foreach (DataGridViewRow row in dataGridView1.Rows)
            {
               //Get the appropriate cell using index, name or whatever and cast to DataGridViewCheckBoxCell
               DataGridViewCheckBoxCell cell = row.Cells["Select"] as DataGridViewCheckBoxCell;

               //Compare to the true value because Value isn't boolean
               if (cell.Value == cell.TrueValue)
               {
                   listBoxTemp.DataSource = cell.Value.ToString().ToList();
               }
                  //The value is true
            }

因此,对于每个选择,必须返回“方法”中的相应字符串

先谢谢

1 个答案:

答案 0 :(得分:0)

使用row.Cells["Methods"]获取该行中的其他相邻单元格。您可以将其插入新列表中,或者在foreach循环中使用它执行其他操作。

即。通过修改现有代码......

ListBox listBoxTemp = new ListBox();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
    DataGridViewCheckBoxCell cell = row.Cells["Select"] as DataGridViewCheckBoxCell;
    if (cell.Value == cell.TrueValue)
    {
        listBoxTemp.Add(row.Cells["Methods"].Value.ToString());
    }
}

如果您要遍历大量行,也可以停止并稍后恢复ListBox的绘制。 Refer to MSDN for an example of this.