【问题标题】:Put selected rows from a GridView to a Listbox将选定的行从 GridView 放入列表框
【发布时间】:2017-05-08 09:56:33
【问题描述】:

我正在尝试以下方法:

    List<object>selectedRows = new List<object>();

        foreach (DataGridViewRow row in dataGridView1.SelectedRows)
        {
            selectedRows.Add(row);
        }

      for (int i = 0; i < selectedRows.Count; i++)
        {
            selectedRowsList.Items.Add(selectedRows[i]);
        }

我有一个按钮和 GridView。现在我希望用户手动选择行并将它们存储在一个列表中,这样我就可以将它们放入一个列表框(带有“”或“;”的值并排)。因此,从 GridView 中获取行并将其显示为我的列表框中的一行。多行应该在另一行之下,就像它在 GridView 中显示的那样)。怎么做?我发布的代码将值存储为“{index = ...}”。

【问题讨论】:

  • 示例当用户选择 3 行时,选择的 3 行数据必须显示在列表框控件中?我说的对吗?
  • 是的!因此,例如,当我有四列并且用户选择三行时,每行都应显示在列表框中的一行中。和列元素并排。就像在 GridView 中一样

标签: c# winforms gridview listbox


【解决方案1】:
foreach (DataGridViewRow  row in dataGridView1.SelectedRows)
        {
            listBox1.Items.Add(row.Cells[0].Value.ToString() +"  "+row.Cells[1].Value.ToString() +"  "+ row.Cells[2].Value.ToString());
        }

当我们使用 RowHeader 选择行时,我们得到如下结果

【讨论】:

  • 非常感谢!这正是我想要的!
【解决方案2】:

这是因为 Microsoft 的 ListBox 显示了 DataGridViewRow 对象的 ToString() 方法的值。因此,您可以用代表 DataGridView 中每一行的字符串对象填充 ListBox。所以在按钮的点击事件中我修改了你的代码如下:

    private void button1_Click(object sender, EventArgs e)
    {
        List<string> selectedRows = new List<string>();

        foreach (DataGridViewRow row in dataGridView1.SelectedRows)
        {
            string currentRow = string.Empty;

            foreach (DataGridViewCell cell in row.Cells)
            {
                currentRow += String.Format("{0} ", cell.FormattedValue);
            }

            selectedRows.Add(currentRow);
        }

        for (int i = 0; i < selectedRows.Count; i++)
        {
            this.listBox1.Items.Add(selectedRows[i]);
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 2014-03-21
    • 2018-12-01
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    相关资源
    最近更新 更多