if ( e.ItemIndex > _documents.Count - 1 ) 不明白那个_documents从哪里来的,貌似应该换成_currentItemList

解决方案 »

  1.   

    Form里包括一个listView,删除Button,删除值的textBox
    namespace WindowsApplication6
    {
        public partial class Form2 : Form
        {
            List<String> _currentItemList = new List<string>(10);        public Form2()
            {
                InitializeComponent();
                for (int i = 0; i < 10; i++)
                {
                    _currentItemList.Add(i.ToString());                
                    
                }
                listView1.VirtualListSize = 10;
            }
            public void RemoveItem(string str)
            {
                _currentItemList.Remove(str);
                listView1.VirtualListSize = _currentItemList.Count;
            }        private void listView1_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e)
            {
                if (e.ItemIndex > _currentItemList.Count - 1)
                {
                    return;
                }
                string doc = null;
                doc = _currentItemList[e.ItemIndex];
                ListViewItem lvi = new ListViewItem(new string[] { doc, doc });
                e.Item = lvi;  
            }        private void button1_Click(object sender, EventArgs e)
            {
                RemoveItem(this.textBox1.Text);
            }         
        }
    }
      

  2.   

    我不知道你的doc是什么对象,我是用string测试的,未发现你说的问题.
      

  3.   

    自己找到解决方法
    谢谢 chinaicm 的耐心回复
    谢谢各位的关注
    结帖~~
      

  4.   

    贴出解决方法,方便以后大家查看 private void ListView1_AfterLabelEdit(object sender, LabelEditEventArgs e)
            {
       ...
              RemoveItem( doc );//删除List <DocInfo> _currentItemList 的数据,
           //设置e.CancelEdit=true;防止删除后,
              //ListView1.VirtualListSize 发生变化触发 protected override void OnRetrieveVirtualItem(RetrieveVirtualItemEventArgs e ) 事件
               e.CancelEdit=true;
       ...
             }