版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ZLK961543260/article/details/80338888
在winform窗口编程的过程中,窗口中有个listview,今天我们要聊得就跟listview有关。如果listview中有很多行,那么我在选中listview其中一行后,在点击窗口中其他按钮的时候,会发现listview中选中行的背景颜色又变成了原来的默认颜色。搞得我都不知道自己选的是哪行了,那么如何使c#在选中某一行后,在点击窗体中的其他按钮后,使选中行还会保留一定的颜色,从而让我们自己清楚选择的是哪行数据呢?
比如说我们当前界面中有个listview1,我们选中listview1中的某行,点击按钮,按钮为log,我们可以取出我们选中行的值。这样以便后续的操作。那么在点击log后,系统默认是会将listview1中选中行的背景颜色变成默认的颜色,也就是白色。这是在log按钮中加入下列代码:
//========================================================设置选择条目背景颜色
if (listView1.SelectedIndices.Count > 0) //若有选中项
{
if (mark == -1)
{
listView1.Items[listView1.SelectedIndices[0]].BackColor = Color.SkyBlue; //设置选中项的背景颜色
mark = listView1.SelectedIndices[0]; //设置当前选中项索引
}
else
{
if (listView1.SelectedIndices[0] != mark)
{
listView1.Items[listView1.SelectedIndices[0]].BackColor = Color.SkyBlue; //设置选中项的背景颜色
listView1.Items[mark].BackColor = Color.White; //恢复默认背景色
mark = listView1.SelectedIndices[0]; //设置当前选中项索引
}
}
}
else //若无选中项
{
listView1.Items[mark].BackColor = Color.White; //恢复默认背景色
mark = -1; //设置当前处于无选中项状态
}
上述代码中,mark为标记,我们初始时将其赋值为-1。
这里多说一点,可能有的人会发现选中一行的时候,只有这行的第一个格子是选中的状态,这种情况是因为你的listview的FullRowSelect属性设置的为false,只要将其改成true问题就解决了。
以上代码的效果图如下所示:
效果如图,选中172行后,点击log按钮,我们可以看出会保留颜色,这样我们就知道我们选中的是哪一行了。