Winforms listView项目删除时崩溃?
我使用以下命令清除整个listViewWinforms listView项目删除时崩溃?,winforms,visual-c++,listview,crash,Winforms,Visual C++,Listview,Crash,我使用以下命令清除整个listView void Form1::button2_Click(System::Object^ sender, System::EventArgs^ e) { ActiveControl = tabControl1->SelectedTab; if (listView3->Items->Count == 0) { ::MessageBox(0, "Please select data.", "Failed
void Form1::button2_Click(System::Object^ sender, System::EventArgs^ e)
{
ActiveControl = tabControl1->SelectedTab;
if (listView3->Items->Count == 0)
{
::MessageBox(0, "Please select data.", "Failed to clear data.", MB_OK | MB_ICONERROR);
}
else
{
listView3->Items->Clear();
}
}
然后,我尝试使用以下命令清除所选项目…但它崩溃了
void Form1::listView3_ItemCheck(System::Object^ sender, System::Windows::Forms::ItemCheckEventArgs^ e)
{
listView3->Items[e->Index]->Remove();
}
我将用什么替换我的remove函数,这样它就不会崩溃
编辑:这是我如何添加到我的listView3
ListViewItem^ subitem = gcnew ListViewItem();
subitem->SubItems->Add(textBox2->Text);
listView3->Items->Add(subitem);
如果该索引处的元素是空引用,则可能必须使用不同的方法 尝试使用项目集合的RemoveAt功能,如下所示:
if (e->Index >= 0 && e->Index < listView3->Items->Count)
{
listView3->Items->RemoveAt(e->Index);
}
if(e->Index>=0&&e->IndexItems->Count)
{
listView3->Items->RemoveAt(e->Index);
}
在从对象中删除之前,只需检查项目列表中是否存在索引。这会崩溃:(.第二次编辑在该行是不可能的!=0检查项目[e->index]是否为空?是否有效?您的第二次编辑修改仍然崩溃,导致Microsoft Visual Studio产生错误:您的第三次编辑仍然崩溃:(复制上述相同的错误结果)。因此,异常为“ArgumentOutOfRange”..您是否可以逐步查看代码并查看它试图删除的索引以及此时集合的状态?