【问题标题】:How do I access Id and Name in combobox.SelectedItem?如何在 combobox.SelectedItem 中访问 Id 和 Name?
【发布时间】:2019-03-05 15:19:27
【问题描述】:

我已经使用 linq 填充了 ComboBox。然后当我使用以下代码时:

var id = combobox.SelectedItem;

给我这个:

{ Id = 1, Name = Anthem }

如何分别访问IdName

【问题讨论】:

  • 能否请您补充一下您是如何填充 ComboBox 的?
  • 你试过id.Idid.Name吗?
  • 这取决于您用来填充 ComboBox Items 列表的内容。如果您使用的是BindingList/List<class>,请将SelectedItem 转换为类对象:var id = combobox.SelectedItem as [MyType];。然后你可以直接访问类成员:id.Idid.Name。由于看起来您只需要 Id 属性,因此您可以直接获取它:var id = (combobox.SelectedItem as [MyType]).Id;。如果 DataSource 是 DataTable/DataView,则略有不同。

标签: c# .net winforms combobox


【解决方案1】:

假设您已将学生列表绑定到组合框,ID 为 ValueMember,名称为 DisplayMember,然后在 SelectedIndexChange 上使用以下代码:

if (combobox.SelectedValue is IConvertible)
        {
            int id = Convert.ToInt32(combobox.SelectedValue);
            string name = combobox.Text;

            // Or

            Student student = cmbCars.SelectedValue as Student;
            int idd = student.Id;
            string names = student.Name;

        }

这必须工作!

【讨论】:

    【解决方案2】:

    假设您有一个匿名类型的列表作为数据源,那么您可以使用以下代码来获取所选项目的属性:

    dynamic item = comboBox1.SelectedItem;
    var id = (int)item.Id;
    var name = (string)item.Name;
    

    【讨论】:

    • 注意:如果你为ComboBox设置了ValueMemberDisplayMember,那么你也可以依赖SelectedValue属性和GetItemText方法。 • 获取选定项值属性:comboBox1.SelectedValue • 获取选定项文本属性:comboBox1.GetItemText(comboBox1.SelectedItem)
    猜你喜欢
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 2012-12-19
    • 2021-09-23
    • 1970-01-01
    • 2016-08-06
    • 2013-01-04
    • 1970-01-01
    相关资源
    最近更新 更多