C# 2.0,WinForm,ListView控件,详细列表模式(Details),只充许单行选择。
默认情况下,当鼠标在ListWiew的空白处点击后,它的选定项(SelectedItems)就会失去焦点,表现为没有任何一项(ListViewItem)被选中。
现在我想知道的是如何才能让当Item个数不为0时,始终有一项被选中。我想到的方法是定义一个m_LastSelectedItem来记忆失去焦点前的状态。但是事实上并不是如此简单。因为SelectedIndexChanged事件总在每次用鼠标或键盘更改选定项时被触发2次。假如有一个叫做SelectedIndexChanging的事件就好了。
别告诉我通过改变HideSelection属性来实现。这个是表示在ListVies而不是ListViewItem失去焦点前保持状态。

解决方案 »

  1.   

    我刚试过,没有你说的问题啊,只有选中其中一项,无任点到那里,始终SelectedItems.Count=1啊??
      

  2.   

    这是我的测试代码            this.listView1.Columns.AddRange(new ColumnHeader[] { new ColumnHeader("AAA") , new ColumnHeader("BBB")});
                this.listView1.Items.AddRange(new ListViewItem[] { new ListViewItem(new string[] { "A111","B111"})
                , new ListViewItem(new 
                    string[]{"A111", "B222"})});
                this.listView1.Click += new EventHandler(listView1_Click);
                
                
            }        void listView1_Click(object sender, EventArgs e)
            {
                label1.Text = this.listView1.SelectedItems.Count.ToString();
            }
      

  3.   

    谢谢楼上朋友。
    你测试的结果确实没有问题,但是当你点击ListWiew空白处时,它并不会触发Click事件,所以当然不会变为0啦。
    而此时,那个可爱的蓝色背景(表示被选中)却不见了。
    我要想实现的效果是项个数不为0的任何时候都有且只有一个项被选中,即始终有一个项有个蓝色背景。