10

listBox1 の選択した項目をメッセージ ボックスに表示しようとしています。コードは次のとおりです。

int index;
string  item;
foreach (int i in listBox1 .SelectedIndices )
{
    index = listBox1.SelectedIndex;
    item = listBox1.Items[index].ToString ();
    groupids = item;
    MessageBox.Show(groupids);
}

問題は、複数のアイテムを選択すると、メッセージ ボックスに選択した最初のアイテムが表示され、メッセージが繰り返されることです。EX: 3 つのアイテムを選択した場合、メッセージは最初のアイテムで 3 回表示されます。

4

4 に答える 4

15

次のようにアイテムを反復処理できます。

        foreach (var item in listBox1.SelectedItems)
        {
            MessageBox.Show(item.ToString());
        }
于 2012-11-28T20:56:05.173 に答える
7

iforeach ループには、必要なインデックスがあります。listBox1.SelectedIndex最初のものしかないものを使用しています。したがって、アイテムは次のようになります。

item = listBox1.Items[i].ToString ();
于 2012-11-28T20:54:09.830 に答える
4

選択したすべてのアイテムを含む 1 つのメッセージ ボックスはどうですか?

List<string> selectedList = new List<string>();
foreach (var item in listBox1.SelectedItems) {
   selectedList.Add(item.ToString());
}
if (selectedList.Count() == 0) { return; }
MessageBox.Show("Selected Items: " + Environment.NewLine +
        string.Join(Environment.NewLine, selectedList));

いずれかが選択されている場合、これにより、メッセージ ボックスで選択された各項目の行が表示されます。おそらく linq でこれを行うもっときれいな方法がありますが、.NET バージョンを指定していません。

于 2012-11-28T21:08:40.673 に答える
2

この解決策を試してください:

string  item = "";    
foreach (int i in listBox1.SelectedIndices )
    {
       item += listBox1.Items[i] + Environment.NewLine;
    }
MessageBox.Show(item);
于 2014-01-26T08:45:06.863 に答える