2014-09-25 169 views
0

基本上它是一个联系人列表,从列表框中选择联系人并点击删除按钮,从列表中删除它。删除列表中的选定项目

 private void btnRmv_Click(object sender, EventArgs e) 
    { 

     try{ 

     listBox.Items.Remove(listBox.SelectedItems[0]); 

     people.RemoveAt(listBox.SelectedIndex); 

     } 
     catch { } 
    } 

此代码似乎删除列表框中的联系人,但如果我保存我的程序并再次打开它,联系人就回到那里。我将所有联系人保存在Xml文件中。该程序自动保存退出,并有一个手动保存按钮。

感谢

+1

从人删除首先列出?由于SelectedIndex将在您从列表框中删除SelectedItems时发生变化。 – Adassko 2014-09-25 07:51:35

+0

哦,我的。这总是你错过的最简单的事情。谢谢 – CodingNub 2014-09-25 07:56:28

回答

1

你不显示在您的代码是为了节省,但我想有一个接触失踪 - 也许你想删除的联系人下一个?

由于您在使用SelectedIndex从列表框中删除项目后,必须选择其他项目。

尝试扭转顺序:

private void btnRmv_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     people.RemoveAt(listBox.SelectedIndex); 
     listBox.Items.Remove(listBox.SelectedItems[0]); 
    } 
    catch { } 
} 
2

尝试从“人”先删除,然后从列表框中删除它,否则对选定的指标参数。示例代码粘贴下面

try 
    { 

    int _SeletedIndex = listBox.SelectedIndex(); 

    listBox.Items.Remove(listBox.SelectedItems[0]); 

    people.RemoveAt(_SeletedIndex); 

    } 
    catch { } 
1

您要删除selected item首先,让你失去了选择的指数,没有项目在列表people删除。

让我们重新安排线路:

people.RemoveAt(listBox.SelectedIndex); 

listBox.Items.Remove(listBox.SelectedItems[0]);