2

リストボックスがあります。選択したすべてのアイテムをループして、選択した各アイテムのテキスト値を取得します。

for (int i = 0; i < lstFieldNames.selectedItems.Count; i++)
{
string s = lstFieldNames.SelectedItems[i].ToString();
}

sの値は「{Item=ADDR}」です。

{Item=}は必要ありません。テキスト「ADDR」が必要です。

私は何を間違っているのですか、私はいくつかのことを試みましたが、何もうまくいかないようです。

4

4 に答える 4

2

ListBoxにはプロパティがないため、これはWinforms質問です(複数形に注意してください)。WinformsにはASP.NETのようなwithプロパティとプロパティがないため、これは重要です。代わりに、単なる。です。ASP.NETSelectedItemsListBoxListItemsTextValueObject

ListBoxまた、のデータソースは匿名タイプであるとコメントしました。後で強い型のオブジェクトにキャストすることはできません。

したがって、私のアドバイスは、目的のプロパティを使用してクラスを作成することです。

class ListItem {
    public String Item { get; set; }
}

匿名タイプを使用する代わりに、そのインスタンスを作成します。

var items = (from i in xDoc.Descendants("ITEM") 
             orderby i.Value 
             select new ListItem(){ Item = i.Element("FIELDNAME").Value })
            .ToList();

今これは動作します:

foreach (ListItem i in lstFieldNames.SelectedItems)
{
    String item = i.Item;   
}

ListItem私のクラスはではないことに注意してくださいASP.NET ListItem

于 2012-08-23T14:22:15.223 に答える
0
string s = lstFieldNames.SelectedItems[i].Text.ToString();

Textプロパティに注意してください

于 2012-08-23T12:55:33.697 に答える
0

これにより、選択された値のみがフェッチされます。

編集:

foreach (object listItem in listBox1.SelectedItems)
{
    string s = listItem.ToString();
}
于 2012-08-23T13:13:17.470 に答える
0

このコードを使用してください:

  string s = "";

  foreach(var item in lstFieldNames.SelectedItems) 
  {
     s += item.ToString() + ",";
  }

  textBox1.Text = s;

リストボックスから選択した1つのアイテムが必要な場合は、次のタラを試してください。

  string s = "";

  foreach(var item in lstFieldNames.SelectedItems) 
  {
     s = item.ToString();
  }

編集 :

この1つのコードを試してください

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        string s = "";

        foreach (var item in listBox1.SelectedItems)
        {
            s += item.ToString() + ",";
        }

        textBox1.Text = s;
    }
于 2012-08-23T13:27:00.180 に答える