从具有SelectedValue的列表框中获取ValueMember?

时间:2016-05-15 12:22:54

标签: c# listbox selectedvalue

我对ValueMember有疑问。我将所有项目保存在一个包含两个成员的ListBox中:

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);
    }

至少,当我双击我的列表中的项目时,我尝试获取UserID:

    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中获取完整的对象,但该剂量工作。

我如何获得ValuedMember" UserID"选择了哪个字符串?

非常感谢答案:)

1 个答案:

答案 0 :(得分:1)

问题是由用于填充Items集合的方式引起的。您将逐项添加项目到Items集合,而应将ListBox的DataSource设置为listBox1.ValueMember = "userId"; listBox1.DisplayMember = "userName"; listBox1.DataSource = listWithObjs; 变量

$this->getLayout()->createBlock('example/adminhtml_event_edit')

当然会删除逐个添加项目的循环

这是一个常见错误,但如果您仔细阅读,则会在ValueMember属性的MSDN页面上以微妙的方式进行解释

  

表示 DataSource 的单个属性名称的String   属性值,或以句点分隔的属性名称的层次结构   解析为最终数据绑定对象的属性名称。