Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过valuemember c从列表框中获取DisplayMember值?_C#_Winforms_Listbox - Fatal编程技术网

C# 如何通过valuemember c从列表框中获取DisplayMember值?

C# 如何通过valuemember c从列表框中获取DisplayMember值?,c#,winforms,listbox,C#,Winforms,Listbox,我有一个列表框,类似这样: ID客户端名称 迈克尔 史蒂夫 史密斯 现在,我知道了客户端的ID,如何获取它的DisplayMember?您可以试试下面的代码。如果Listbox的数据源是DataTable,则编写该示例,但如果它是其他内容,则尝试查看Listbox的Items属性中的对象是什么类型 注意,我不喜欢使用break语句,但这是最快的方法 string str = string.Empty; foreach (DataRowView drv in listBox1.Items) {

我有一个列表框,类似这样:

ID客户端名称

迈克尔 史蒂夫 史密斯
现在,我知道了客户端的ID,如何获取它的DisplayMember?

您可以试试下面的代码。如果Listbox的数据源是DataTable,则编写该示例,但如果它是其他内容,则尝试查看Listbox的Items属性中的对象是什么类型

注意,我不喜欢使用break语句,但这是最快的方法

string str = string.Empty;
foreach (DataRowView drv in listBox1.Items)
{
       int lvID = int.Parse(drv.Row[listBox1.ValueMember].ToString());
       if (lvID == 5)
       {
             str = drv.Row[listBox1.DisplayMember].ToString();
             break;
       }
}

其中USStates是通用列表,TextBox1.text包含id的值。考虑到您的列表框使用通用列表作为数据源。

有一个更简单的解决方案。尤其是在构建数据源、填充数据源然后释放数据源时。使用“项目”列表创建当前选定项目的DataRowView。然后只要拉正确的索引。0将为您提供值成员,1将为您提供显示成员

DataRowView thisLine = cbTrackerFormList.Items[cbTrackerFormList.SelectedIndex] as DataRowView;
转换为DataRowView并转换按索引选择客户机名称列,即1

String ClientName = (((DataRowView) listBox1.SelectedItem).Row[1]).ToString();

你所说的“客户的显示成员”是什么意思?您可以通过listbox.DisplayMember获取用于在listbox中显示的属性的名称。DisplayMember是什么,如果我知道客户端id是1,我需要知道他的名称是MichaelListbox绑定到的数据是什么?是客户机对象列表吗?如果我知道valueMember,为什么我必须查看列表中的所有项目。如果是1000个项目列表,我必须检查所有1000个项目?@user1205025您找到更好的方法了吗?为什么不在数据源实例中搜索,我更愿意这样做。在列表框中,您应该选择一些数据,它不应该用作保存数据的数据结构。@user1205025除此之外,如果有任何其他方法,它也可能通过一些优化进行迭代,但它对您是隐藏的。@NikolaDavidovic如果我使用列表框的数据源是列表,那么我如何获得所选值?请您提供帮助me@Siva我真的不明白你的问题,你能不能说得更清楚一点,这样我可以试着帮你?什么是列表,在你的例子中是什么?
String ClientName = (((DataRowView) listBox1.SelectedItem).Row[1]).ToString();