【问题标题】:Store elements from a ListView into a List将 ListView 中的元素存储到 List 中
【发布时间】:2015-05-10 10:51:33
【问题描述】:

由于我没有找到任何帮助,我在这里提出我的问题:

我有一个 ListView,通过单击选择整行。现在我想将这些选定的项目存储到一个列表中,但不知道这应该如何工作。

       List<String> itemSelected = new List<String>();

        foreach (var selectedRow in listView1.SelectedItems)
        {
            itemSelected.Add(selectedRow);
        }

这不起作用,因为我需要一个索引 (selectedRow[?]) 或类似的东西。单击行时如何存储第一列的值?

编辑:问题在于 ListViewItems 的类型为“object”

ListView 以这种方式填充:

 using (SqlConnection connection = new SqlConnection(connectionQuery))
            {
                foreach (DataGridViewRow row in dataGridView1.SelectedRows)
                {
                    col1 = row.Cells[col1.Text].Value.ToString();
                    col2 = row.Cells[col2.Text].Value.ToString();

                    col1Cells.Add(col1);
                    col2Cells.Add(col2);
                }

            }

【问题讨论】:

  • 这是来自 GridView 的数据。我编辑了

标签: c# winforms list listview


【解决方案1】:

将 ListView 绑定到非平凡类型的 List 是很常见的。

然后你可以处理 SelectedItemChanged 或类似的东西。您会收到整个对象(类型为 object),您可以将其转换为您的自定义类型并检索您想要的任何属性

【讨论】:

  • 如何正确投射?我现在将 List 更改为 ArrayList 并存储它们,但我希望它们为整数。
【解决方案2】:

你可以这样做:

ListViewItem listViewItem = this.listView1.SelectedItems.Cast<ListViewItem>().FirstOrDefault();
if (listViewItem != null)
{
    string firstColumn = listViewItem.Text;
    string secondColumn = listViewItem.SubItems[0].Text;
    // and so on with the SubItems
}

如果您有更多选择的项目并且只需要您可以使用的第一列的值:

List<string> values = listView1.SelectedItems.Cast<ListViewItem>().Select(listViewItem => listViewItem.Text).ToList();

【讨论】:

  • 一个可以选择多个项目,我只需要将第一列的值存储到我的列表中
  • 非常感谢!这帮助我解决了我的问题!
猜你喜欢
  • 1970-01-01
  • 2017-10-25
  • 1970-01-01
  • 1970-01-01
  • 2016-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多