2016-05-15 10 views
0

私はValueMemberに問題があります。私は2つのメンバーと、リストボックス内のすべての私の項目を保存:SelectedValueでリストボックスからValueMemberを取得しますか?

listBox1.ValueMember = "userId"; 
listBox1.DisplayMember = "userName"; 

今私はリストに私のObjを追加するためのループを作成します。

foreach (var tempItem in listWithObjs) 
    { 
     MyItem testItem = new MyItem(); 
     testItem.userID = tempitem;//userID and userName are Strings the content is not very important i think 
     testItem.userName = item.Split('\\').Last(); 
     listBox1.Items.Add(testItem); 
    } 

は、少なくとも、私はときに私のユーザIDを取得しようダブル私のリストの項目をクリックしてください:

private void listBox1_DoubleClick(object sender, EventArgs e) 
    { 
     var selected = listBox1.SelectedValue; //SelectedValue is null 
     label1.Text = Convert.ToString(selected); 
    } 

ここでSelectedValueはnullです。

私はSelectedItemを使用しようとしますが、これは単に "MyItem"を返します。私はselectから完全なオブジェクトを取得しようとしますが、そのdosentは機能します。

選択した文字列にValuedMember "UserID"を取得するにはどうすればよいですか?回答のため

ずっと感謝:)

答えて

1

問題がItemsコレクションを埋めるために使用される方法によって引き起こされます。あなたは、これはもちろんlistWithObjs変数

listBox1.ValueMember = "userId"; 
listBox1.DisplayMember = "userName"; 
listBox1.DataSource = listWithObjs; 

に、あなたのリストボックスのDataSourceを設定しなければならない代わりに、アイテムをItemsコレクションに一つずつ追加1

で項目1を加算ループを削除していますよくある間違いが、あなたが慎重に読めば、それは、データソースの単一のプロパティ名を表す文字列は

ValueMemberプロパティのMSDNのページに微妙な方法で説明されていますプロパティ値、または末尾に区切られたプロパティ名の階層で、 が最終的なデータバインドオブジェクトのプロパティ名に解決されます。

+0

タイは私のために働いた素晴らしい! :) –

関連する問題