【问题标题】:how to get DisplayMemeber value from listbox by valuemember c#?如何通过 valuemember c# 从列表框中获取 DisplayMemeber 值?
【发布时间】:2012-11-22 11:48:49
【问题描述】:

我有一个列表框,如下所示:

ID 客户名称

  1. 迈克尔
  2. 史蒂夫
  3. 史密斯

现在,我知道了客户端的 ID,如何获取它的 DisplayMember?

【问题讨论】:

  • 客户的DisplayMember 是什么意思?您可以通过listBox.DisplayMember 获取用于在列表框中显示的属性名称
  • 我要说的是,如果我知道客户 id 是 1,我需要知道他的名字是 Michael
  • 你的列表框绑定了哪些数据?它是客户端对象的列表吗?

标签: c# winforms listbox


【解决方案1】:

转换成DataRowView并按索引转换选择客户名称列,即1。

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

【讨论】:

    【解决方案2】:

    你可以试试这个代码。如果ListboxDataSourceDataTable,则编写该示例,但如果是其他内容,请尝试查看ListBox 的Items 属性中的object 是什么类型。

    (请注意,我不喜欢使用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;
           }
    }
    

    【讨论】:

    • 如果我知道 valueMember,为什么我必须查看列表中的所有项目。如果是 1000 项列表,我必须检查所有 1000 项?
    • @user1205025 你找到更好的方法了吗?你为什么不在你的 DataSource 实例中搜索,我宁愿这样做。在 ListBox 中你应该选择一些数据,它不应该被用作保存数据的数据结构。
    • @user1205025 除此之外,如果有任何其他方法,它也会迭代(可能进行一些优化),但它对你隐藏。
    • @NikolaDavidovic 如果我使用列表框的数据源是列表,那么我怎样才能获得选定的值,你能帮帮我吗
    • @Siva 我真的不明白你的问题,能否请你说得更清楚些,以便我能帮助你?
    【解决方案3】:
    var t = from list in USStates where te.ShortName == textBox1.Text select te.LongName.ToString();     
    
    foreach(String st in t)
     {
       MessageBox.Show(st);   
    }
    

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

    【讨论】:

    • 什么是 list ,在你的例子中是什么?
    【解决方案4】:

    有一个更简单的解决方案。特别是如果您正在构建数据源,填充它,然后释放源。使用 Items 列表创建当前所选项目的 DataRowView。然后只需拉出正确的索引。 0 给你“价值成员”,1 给你“展示成员”。

    DataRowView thisLine = cbTrackerFormList.Items[cbTrackerFormList.SelectedIndex] as DataRowView;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-19
      相关资源
      最近更新 更多