将选定的行从 GridView 放入列表框

Put selected rows from a GridView to a Listbox

我正在尝试以下操作:

    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。现在我希望用户手动 select 行并将它们存储在一个列表中,这样我就可以将它们放入一个列表框中(值与“”或“;”并排)。因此,从 GridView 中取出该行并将其显示为我的列表框中的一行。多行应该像在 GridView 中显示的那样,一行在另一行下方)。怎么做?我发布的代码将值存储为“{index = ...}”。

发生这种情况是因为 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]);
        }
    }
foreach (DataGridViewRow  row in dataGridView1.SelectedRows)
        {
            listBox1.Items.Add(row.Cells[0].Value.ToString() +"  "+row.Cells[1].Value.ToString() +"  "+ row.Cells[2].Value.ToString());
        }

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