用ListView實現點擊ListView的項刪除該項的效果,調用ItemSelectionChanged事件。
代碼如下:
private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) { listView1.Items.Remove(e.Item); }
發生異常:
System.ArgumentOutOfRangeException: InvalidArgument=Value of '1' is not valid for 'index'. Parameter name: index at System.Windows.Forms.ListView.ListViewItemCollection.get_Item(Int32 index) at System.Windows.Forms.ListView.WmReflectNotify(Message& m) at System.Windows.Forms.ListView.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
編譯成EXE運行時則會會出現這種錯誤提示:
這是因為,當你點擊第一項的時候,進入了該事件,第一項刪除以後再次進入該事件,此時 e仍為第一項的值,故報錯。索引溢出。解決方法是在Click事件中進行此操作。
private void listView1_Click(object sender, EventArgs e) { if (listView1.SelectedItems.Count > 0) { listView1.Items.Remove(listView1.SelectedItems[0]); } }