c#中listview选中后改变背景颜色

版权声明:本文为博主原创文章,未经博主允许不得转载。 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按钮,我们可以看出会保留颜色,这样我们就知道我们选中的是哪一行了。

猜你喜欢

转载自blog.csdn.net/ZLK961543260/article/details/80338888