【问题标题】:Is there a way to add objects from a listbox to a list?有没有办法将列表框中的对象添加到列表中?
【发布时间】:2017-03-12 16:29:03
【问题描述】:

我正在尝试将列表框中的对象添加到列表中。

以下代码是我尝试它的方式,但是当我尝试在 List 中添加变量时,它会引发 Null 异常。

列表标题为游戏

Game 是一个自定义类。

foreach(var item in collectionListBox.Items)
        {
            games.Add(item as Game);
        }

【问题讨论】:

  • 异常的详细信息是什么?以及这些项目是如何添加到列表框中的?
  • 这是一个 NullReferenceException 并且列表框是从列表中填充的 foreach(Game g in games){collectionListBox.Items.Add(g.ToString());}
  • 您最初是如何填充列表框的?看起来item 无法转换为游戏对象。
  • 我只是用 collectionListBox.Items.Add(Games.ToString()); 更改了添加到列表框的方式;
  • 老实说,我正在尝试在从列表框中列表的排序版本中删除对象后更新列表

标签: c# windows-forms-designer


【解决方案1】:

这是一个 NullReferenceException 并且列表框是从列表中填充的 foreach(Game g in games){collectionListBox.Items.Add(g.ToString());}

由于您是这样添加它们的,因此您的列表框中有一堆 strings,因为您使用 Add(g.ToString()) 添加它们。然后,当您将它们拉出时,您将在下面的代码中遍历列表框中的项目,然后调用item as Gameitemstring,所以这是不可能的:

foreach(var item in collectionListBox.Items)
{            
    games.Add(item as Game);
}

你必须这样做:

foreach(var item in collectionListBox.Items)
{            
    games.Add(item.ToString());
}

【讨论】:

  • 我得到错误读取无法从字符串转换为对象
  • 你从哪里得到这个错误?代码中的行号是在答案中还是其他地方?
  • 行错误是针对有 games.Add(item.ToString()); 的行
  • 这是不可能的:string 始终可以转换为 object。我认为你误读了错误。您在games 中保留了哪些物品?
  • 我实际上已经决定从 ListBox 切换到 ListView,似乎更容易实现我想要实现的目标。
【解决方案2】:

使用 Listview 并使用 objects 标记属性将 listview 中的对象添加到列表中更容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 2020-04-27
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多