【问题标题】:How to swap two rows in a ListView details view?如何在 ListView 详细信息视图中交换两行?
【发布时间】:2011-02-18 20:54:42
【问题描述】:

在 ListView 中交换项目的最简单方法是什么?

我的方案是有一个排列方法。

示例: 我想将第一行或索引 0 中的元素更改为第二行或索引 1

ListView 项目起始顺序:

  • |你好|你好|
  • |12345|12|

交换后

  • |12345|12|
  • |你好|你好|

如何做到这一点?

【问题讨论】:

    标签: c# winforms listview


    【解决方案1】:

    您是否尝试从 ListView 中删除 ListViewItem n,当然保留对它的引用,然后您可以将其插入到位置 n-1。

    我没有尝试过,但如果我记得很清楚的话,有 ListView.Items.Insert 或 AddAt,它以索引作为参数并添加 ListViewItem。

    【讨论】:

      【解决方案2】:

      你可以创建一个函数,它需要两个你想要交换的索引和商业交换 像这样:

      private: void Swapinlistbox( int indexA, int indexB)
              {
                  ListViewItem item = listView1.Items[indexA];
                  listView1.Items.Remove(item);
                  listView1.Items.Insert(indexB, item);
      
      
              }
      

      【讨论】:

      • 这不会交换,它只是将 itemB 放在 B 的位置,但不会将 itemB 移动到 A 的位置。当您有 2 个相邻元素时,它可能会起作用,所有其他情况都不会产生预期的结果。
      【解决方案3】:

      ListView 的通用 Swap 方法:

       private void SwapListView(ListView list, ListViewItem itemA, ListViewItem itemB)
       {
              int bIndex = itemB.Index;
              int aIndex = itemA.Index;
              list.Items.Remove(itemB);
              list.Items.Remove(itemA);
              list.Items.Insert(bIndex, itemA);
              list.Items.Insert(aIndex, itemB);
       }
      

      【讨论】:

        猜你喜欢
        • 2010-12-06
        • 1970-01-01
        • 2011-11-01
        • 2015-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多