如何判断列表框中的哪一行

本文关键字:一行 列表 何判断 判断 | 更新日期: 2023-09-27 18:31:24

基本上,我的代码中有一些静态数组,如下所示:

private string[] mFirst = new string[10] { "Amy", "Scott", "Jamie", "Sharon", "Brock", "Baxtor", "John", "", "", "" };

所以我必须在程序中为用户存储一些数据。现在,在程序中,我将存储的数据显示到列表框中。从那里,用户可以向其添加更多数据并显示它。

问题是我试图允许用户删除条目。我的删除功能工作正常。问题是它只是从列表框中删除它,实际上并没有从程序内部存储中删除它。因此,当我向用户重新显示存储的条目时,它会重新出现,因为它从未真正删除过。

我的问题是如何决定用户删除哪一行以及与哪个数据条目相关?我想过为每个数组条目分配一个数字,然后运行一个循环来删除该存储的条目,但我不知道从哪里开始这样做,或者是否有更简单的方法可以做到这一点,我只是不知道。

编辑:

ListBox.SelectedObjectCollection selectedItems = lstOutput.SelectedItems;
List<object> fixedItems = new List<object>();
fixedItems.Add(mFirstLine);
fixedItems.Add(mAverage);
fixedItems.Add(mHigh);
fixedItems.Add(mLow);
fixedItems.Add(mSpace);
for (int i = selectedItems.Count - 1; i >= 0; i--)
{
    if (fixedItems.Contains(selectedItems[i]) == false)
    {
        lstOutput.Items.Remove(selectedItems[i]);
    }
}

这就是我的删除方法的样子。我知道这不是最好的。所有 fixedItems.Add 都是我不想删除的标签。

要回答所有问题,我必须有一个静态数组。这不是自愿的;作业需要它。我完全同意动态是要走的路,但同样,它必须是静态的。所以@No名称的想法,不确定您的建议是否适用于静态数组。

这是Windows窗体。

@dav_i 不知道为什么我会删除所有内容并再次添加。我需要做的就是能够删除他们选择的那个条目,该条目被存储,然后我会添加所有内容。我可以从列表框中删除它,但不确定如何删除它实际存储在我的程序中的位置,因为我需要确切地知道它在数组中的哪个条目。

@AMR 不知道什么是数据绑定。我看看

如何判断列表框中的哪一行

我会建议你两件事。

  1. 使用更动态的通用列表。您不知道用户想要多少项目,从中删除会更容易:

    List<string> mFirst = new List<string>();
    mFirst.AddRange(new string[] { "Amy", "Scott", "Jamie", "Sharon", "Brock", "Baxtor", "John", "", "", "" });
    listBox1.Items.AddRange(mFirst.ToArray());
    
  2. 删除您现在可以执行的项目

    mFirst.RemoveAt(listBox1.SelectedIndex);
    
当您

listBox中删除该项目时(在将其从listBox中删除之前),您可以执行此操作