【问题标题】:ListView.Items.Add adding a ListViewItem to wrong ListViewListView.Items.Add 将 ListViewItem 添加到错误的 ListView
【发布时间】:2015-12-08 18:03:04
【问题描述】:

我的代码中有两个 ListView 对象,MovieList 和 UserFriendList。我有一个看起来像这样的方法

public void passFriends(ListViewItem[] friends)
    {
        foreach (ListViewItem tempItem in friends)
        {
            ListViewItem temp = new ListViewItem();
            temp = (ListViewItem)tempItem.Clone();
            UserFriendList.Items.Add(temp);
        }
    }

该方法旨在将 ListViewItems 数组从一个窗体传递到另一个窗体,然后将每个 listview 项添加到 UserFriendList。但是,当我实际执行操作时,ListViewItem(一个用户)被添加到我的 MovieList 而不是我的 UserFriendsList

有人知道为什么会这样吗?

【问题讨论】:

  • 这里的电影列表在哪里?
  • MovieList 不是这种方法的一部分,这就是它如此令人费解的原因。但是,在表单的构造函数中可以找到初始化 MovieList 并向其添加列的代码
  • 你在 temp 变量中得到的值是多少?什么是类型/
  • 您看似添加到 UserFriendList 中的临时项目显示在 MovieList 中的唯一方法是 UserFriendList 是对 MovieList 的引用。也就是说,如果显示的代码是正在执行的实际代码。您可以尝试的一件事是先进行清理并重新编译。然后看看你没有将 MovieList 分配给 UserFriendList。
  • 与你的问题无关,但你为什么要创建一个新的 temp 实例,然后在下一行为 temp 分配一个不同的对象?为什么不这样做:ListViewItem temp = (ListViewItem)tempItem.Clone();

标签: c# listview listviewitem


【解决方案1】:

这个问题可以结束了。我发现了我的问题。用于演示列表切换的一段遗留代码没有被删除,它正在更改 UserFriendList 的列表视图

【讨论】:

    猜你喜欢
    • 2011-03-07
    • 1970-01-01
    • 2015-12-24
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    相关资源
    最近更新 更多