【问题标题】:SelectRow with Checkbox in DataGridView在 DataGridView 中带有复选框的 SelectRow
【发布时间】:2014-05-19 21:58:11
【问题描述】:

我有一个带有 CheckBox 列的 Datagrid。我需要从此数据网格中选择多行并将 SelectedRows 获取到另一个表单。我需要的是,当我选中复选框时,所有选中的行仍必须选中(蓝色高亮),直到我将它们传递给另一个表单。我现在可以这样做,但仅针对一行,使用此代码选择的一行

private void button2_Click(object sender, EventArgs e)
    {                      
        DataTable table = new DataTable();
        foreach (DataGridViewColumn column in dataGridView1.Columns)
        {
            table.Columns.Add(column.Name, typeof(string)); //tipo cell??
        }
        for (int i = 0; i < dataGridView1.SelectedRows.Count; i++)
        {
           table.Rows.Add();

            for (int j = 0; j < dataGridView1.Columns.Count; j++)
            {
                table.Rows[i][j] = dataGridView1.SelectedRows[i].Cells[j].Value;
                fph.dataGridView1.DataSource = table; //DATAGRID DO FORM PH 
            }
        }
    }

谢谢大家!

【问题讨论】:

  • 你有多重选择吗?
  • 您的应用程序中有DataGrid 和DataGridView 还是只有DataGridView?如果是后一种情况,请避免将其缩短为 DataGrid,因为 DataGrid 是另一个(几乎已弃用).NET 组件的名称
  • @TaW - 是的,我已经戴上了!
  • @SauliusŠimčikas - 好的!谢谢,对不起!

标签: c# winforms checkbox datagridview datagrid


【解决方案1】:

单击一个项目将选择它并取消删除所有其他项目。 这是标准行为。 符合 GUI 标准的明显方法是教育您的用户按 control,如果他们不想丢失当前的选择,就像他们必须在系统中的任何其他地方。

如果您不喜欢这样,您会发现一些奇怪的技巧,或者在每个 CellMouseDown 上检查这是否是 Checkbox 列,然后存储选定的行并在 CellMouseUp 上恢复选择。 (或类似的东西,没有时间在这里为您测试..)

【讨论】:

  • 我理解,就像“检查所有项目”然后用户取消选择其他项目。我想这也是我会选择的方式!谢谢TaW先生
猜你喜欢
  • 1970-01-01
  • 2012-11-27
  • 2016-10-02
  • 1970-01-01
  • 2018-02-27
  • 1970-01-01
  • 1970-01-01
  • 2014-11-06
  • 1970-01-01
相关资源
最近更新 更多