1

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

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 Idea For Name,不确定您的建议是否适用于静态数组。

这是 Windows 窗体。

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

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

4

1 回答 1

2

我会建议你两件事。

  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

于 2013-09-16T12:19:05.347 回答