1

基本的に、コードには次のような静的配列がいくつかあります。

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

そのため、ユーザーのデータをプログラムに保存する必要があります。次に、プログラムで、この保存されたデータを listBox に表示します。そこから、ユーザーはさらにデータを追加して表示することもできます。

問題は、ユーザーがエントリを削除できるようにしようとしていることです。削除機能が正常に動作しています。問題は、リストボックスから削除するだけで、実際にプログラム内に保存されているものから削除していないことです。そのため、保存されたエントリをユーザーに再表示すると、実際には削除されていないため、再表示されます。

私の質問は、ユーザーが削除する行と、それに関連するデータ エントリを決定する方法です。各配列エントリに番号を割り当て、その後ループを実行してその保存されたエントリを削除することを考えましたが、どこから始めればよいか、またはこれを行う簡単な方法があるかどうかはわかりません。知ってる。

編集:

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

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 に答える