C# ListView总是有一个被选中

来源:互联网 发布:js二级联动菜单原理 编辑:程序博客网 时间:2024/06/10 23:11
int nLast = -1;
        int nCur = -1;
        private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
        {
            // 保留当期那被选择的状态
            bSel = e.IsSelected;
            var ll = listView1.SelectedIndices;
            var asd = listView1.CheckedIndices;


            // 将上一个设置为未选中
            if (e.IsSelected)
            {
                nCur = e.ItemIndex;
                if (nLast < 0)
                {
                    nLast = e.ItemIndex;
                }
            }
            else
            {
                nLast = e.ItemIndex;
            }


            


            if (e.IsSelected)
            {
                listView1.Items[e.ItemIndex].BackColor = SystemColors.Highlight;
                listView1.Items[nLast].BackColor = SystemColors.Window;
            }




            if (bClickEmpty)
            {
                listView1.Items[nLast].BackColor = SystemColors.Highlight;
                bClickEmpty = false;
                nCur = nLast;
            }
        }




        int xPos, yPos;
        bool bClickEmpty = false;
        private void listView1_MouseMove(object sender, MouseEventArgs e)
        {
            xPos = e.X;
            yPos = e.Y;
        }


        private void listView1_MouseDown(object sender, MouseEventArgs e)
        {
            if (listView1.HitTest(xPos, yPos).Item == null) //点击空白处
            {
                bClickEmpty = true;
            }
        }
0 0
原创粉丝点击