c# listview 如何改变某一行的位置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# listview 如何改变某一行的位置相关的知识,希望对你有一定的参考价值。

比如我选中了第三行 如何让它调到第一行 或者任意我想要的位置

参考技术A //新建windows窗体,添加listView1,button1,粘贴代码运行
//选择某一项,点击按钮,则item向上移动
public partial class Form1 : Form

public Form1()

InitializeComponent();

private void Form1_Load(object sender, EventArgs e)

listView1.View = View.Details;
listView1.FullRowSelect = true;
button1.Text = "向上";
listView1.Columns.Add("col");
listView1.Items.Add("item1");
listView1.Items.Add("item2");
listView1.Items.Add("item3");

private void button1_Click(object sender, EventArgs e)

if (listView1.SelectedIndices.Count > 0)

int index = listView1.SelectedIndices[0];
if (index > 0)

List<ListViewItem> L = new List<ListViewItem>();
foreach (ListViewItem item in listView1.Items)

L.Add(item);

L[index - 1] = listView1.Items[index];
L[index] = listView1.Items[index - 1];
listView1.Items.Clear();
foreach (ListViewItem item in L)

listView1.Items.Add(item);




本回答被提问者和网友采纳
参考技术B 这个啊,只有先把所有items删除了,然后再添加上去,要么呢,就是把两个item的值互相换下。 参考技术C 没懂什么意思.....................

C# 获取listview中选中一行的值

首先必须要判断listView1.SelectedItems.Count>0或是listview1.SelectedIndices.Count>0

否则第一次点击会选不中。

其次,itemSelectionChanged(选中项改变) 和 SelectedIndexChanged(选中项索引值改变,有参数可以直接获取当前选中的索引)事件都可以触发。

案例:

例如下面使用的例子:

选中点击那一行的第一列的值,索引值必须是0,而且无论点这一行的第几列,选中的都是这一行第一列的值 ,如果想获取这一行除第一列外的值,则用subitems获取,subitems的[]中为索引,从1开始。

private void listView_ItemSelectionChanged(object sender,EventArgs e)
{  

	if (listView1.SelectedItems.Count == 0) 
		return;  
  	else 
	{ 
		//选中点击那一行的第一列的值,索引值必须是0,而且无论点这一行的第几列,选中的都是这一行第一列的值 ,如果想获取这一行除第一列外的值,则用subitems获取,[]中为索引,从1开始。
		string first = listView1.SelectedItems[0].Text;
		string second = listView1.SelectedItems[0].SubItems[1].Text;
	}
}


以上是关于c# listview 如何改变某一行的位置的主要内容,如果未能解决你的问题,请参考以下文章

C# WPF Listview 如何设置某一行的颜色

WPF中如何实现在listview中直接实现编辑功能?

请问 WPF中如何动态改变 ListView中 某一个值 颜色。

C# 获取listview中选中一行的值

C# 获取listview中选中一行的值

如何清空C#中dataGridView的某一行数据??