【问题标题】:Delete 4 ListBox items by selecting one通过选择一个删除 4 个 ListBox 项目
【发布时间】:2013-12-18 04:49:34
【问题描述】:

我想知道,但我有 4 个列表框,我想知道如何仅通过选择一项来删除所有 4 个项目?

正如您在此处看到的,这是删除所选项目的部分,但如果我只选择“seriesName”一项,我将如何删除列表框中的所有 4 个项目。

for (int x = lstb_seriesName.SelectedIndices.Count - 1; x >= 0; x--)
{
    int a = lstb_seriesName.SelectedIndices[x];
    lstb_seriesName.Items.RemoveAt(a);
}

这是删除按钮的代码。

private void btn_Delete_Click(object sender, EventArgs e)
{
    if (lstb_seriesName.SelectedItems.Count <= 0)
    {
        MessageBox.Show("You need to select an item to delete first!");
    }
    else
    {
        for (int x = lstb_seriesName.SelectedIndices.Count - 1; x >= 0; x--)
        {
            int a = lstb_seriesName.SelectedIndices[x];
            lstb_seriesName.Items.RemoveAt(a);
        }

        System.IO.StreamWriter DeleteFileData = new System.IO.StreamWriter(sPath);
        foreach (var item in lstb_seriesName.Items)
        {
            DeleteFileData.WriteLine(item);
        }

        foreach (var item in lstb_seriesDay.Items)
        {
            DeleteFileData.WriteLine(item);
        }

        foreach (var item in lstb_seriesTime.Items)
        {
            DeleteFileData.WriteLine(item);
        }

        foreach (var item in lstb_seriesActive.Items)
        {
            DeleteFileData.WriteLine(item);
        }
        DeleteFileData.Close();

        MessageBox.Show("Program deleted!");
    }
}

【问题讨论】:

    标签: c# winforms listbox


    【解决方案1】:

    做到这一点的唯一方法是,如果您能保证它们的顺序相同。

    在这种情况下,您可以使用 IndexOf(item) 并使用索引值按索引删除其他列表项。

    否则,您需要某种方式将这些人彼此联系/关联起来。

    按请求编辑:

    private void btn_Delete_Click(object sender, EventArgs e)
    {
        if (lstb_seriesName.SelectedItems.Count <= 0)
            MessageBox.Show("You need to select an item to delete first!");
        else
        {
            var indexesToRemove = lstb_seriesName.SelectedIndices;
    
            foreach(var index in indexesToRemove)
            {
                lstb_seriesName.Items.RemoveAt(index);
                lstb_seriesDay.Items.RemoveAt(index);
                lstb_seriesTime.Items.RemoveAt(index);
                lstb_seriesActive.Items.RemoveAt(index);
            }    
    
            MessageBox.Show("Program deleted!");
        }    
    }    
    

    【讨论】:

    • 你有机会举个例子吗?我明白你的意思,但我是 C# 新手,所以我只能通过视觉解释真正学习。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    相关资源
    最近更新 更多