有这样一个ListView控件,要做到在选择了一行以后按del键删除这一行,使用KeyUp事件已经成功,但有个问题:当将所有行删除掉以后,再按del键,就会出错,或者不选择某行,在控件空白处点一下鼠标再按del键也一样出错请问应该使用ListView控件的哪个属性来判断是否已经选择了某行

解决方案 »

  1.   

    if (this.listView1.SelectedItems.Count > 0)
                        {
                            //表示有选中行
                        }
                        else
                        {
                            //说明没有选中行
                        }
      

  2.   

    不行的,我在KeyUp事件函数中if (this.ListView1.SelectedItems.Count > 0)
                    return;
    if (e.KeyCode == Keys.Delete)
    {
        ListView1.Items.RemoveAt(RPList.SelectedIndices[0]);
    }在控件空白处点鼠标左键再按del键,一样会报错InvalidArgument=“0”的值对于“index”无效。
    参数名: index
      

  3.   

    private void ListView1_KeyUp(object sender, KeyEventArgs e)
    {
        if (this.ListView1.SelectedItems.Count > 0)
            return;
        if (e.KeyCode == Keys.Delete)
        {
            ListView1.Items.RemoveAt(ListView1.SelectedIndices[0]);
        }
    }现在这个代码,在ListView1控件上点空白处,按del键,就会报错
      

  4.   

    你这样改下看:if (this.ListView1.SelectedItems.Count > 0)改成
    if (this.ListView1.SelectedItems.Count == 0)另外还有两个属性:在属性框里将FullRowSelect设为True(这个必须改成这个)另外还有个MultiSelect设为True(表示允许多行选中,不改也成)
      

  5.   

    又试了一下,FullRowSelect和MultiSelect不改也是可以的...