繁体   English   中英

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

[英]Get the ValueMember from a Listbox with 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);
    }

至少,当我双击列表中的项目时,我会尝试获取用户ID:

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

这是问题SelectedValue为空。

我尝试使用SelectedItem,但是这只会返回“ MyItem”,我尝试从select中获取完整的对象,但是该方法很有效。

如何获得ValuedMember的“ UserID”到所选的字符串?

非常感谢您的答案:)

该问题是由用于填充Items集合的方式引起的。 您正在将项一个接一个地添加到Items集合,而应该将ListBox的DataSource设置为listWithObjs变量

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

当然要删除一个循环地添加项目

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM