如何访问组合框的指定字段

时间:2019-01-11 06:57:21

标签: c# winforms combobox

我有一个ComboBox,它从DataTable对象获取Text和Value字段。

 foreach (DataRow dr in dtSip.Rows)
       {
         cbxSipNo.Items.Add(new { Text = dr[0].ToString() ,Value = dr[2].ToString()});
       }
       cbxSipNo.ValueMember = "Value";
       cbxSipNo.DisplayMember = "Text";

我的问题是访问以下指定的“文本”和“值”字段时。

if (cbxSipNo.Items.Contains( new { Text= row.Cells[5].Value.ToString()} )
   {
    //some code
   }

在执行包含操作时,我不知道要访问“文本”字段。当我尝试不使用新语法时,它将查找“文本”和“值”字段组合。如何在ComboBox的“文本”字段中包含内容?

1 个答案:

答案 0 :(得分:1)

一种方法是创建一个类。

class MyItem
{
    public string Text { get; set; }
    public string Value { get; set; }
}

然后将数据行值添加到组合框之类的上述类的对象中

foreach (DataRow dr in dtSip.Rows)
{
    cbxSipNo.Items.Add(new MyItem { Text = Convert.ToString(dr[0]), Value = Convert.ToString(dr[2]) });
}

然后您可以将组合框项目投射到MyItem类以上,然后检查组合框中是否存在Any个项目,其中包含您的数据行值

string str = row.Cells[5].Value; 

if (cbxSipNo.Items.Cast<MyItem>().Any(x => Convert.ToString(str).Contains(x.Text)))
{
    //some code
}