2

我有一个带有ValueMember = IDand的组合框DisplayMember = Name。我需要与该名称关联的值,因此我执行以下操作:

if (cboTypeOfMaterial.SelectedIndex != -1)
            {
                string temp = cboTypeOfMaterial.SelectedValue.ToString();
                //More code here...
            }

它将ID值作为字符串返回。例如 - “7”。

如果我尝试:

if (cboTypeOfMaterial.SelectedIndex != -1)
                {
                    string temp = cboTypeOfMaterial.DisplayMember.ToString();
                    //More code here...
                }

我得到了关键的字符串Name

我需要的是获取所选元素的值Name

4

6 回答 6

4

尝试访问元素,通过SelectedItem该元素将为您提供与该条目关联的整个对象,然后您可以访问所需的属性,在您的情况下ID

于 2013-02-26T07:41:40.310 回答
4

SelectedValue将返回中定义的属性的值ValueMemberSelectedItem将返回被选中的整个对象,如果您想获得除您之外的另一个值,SelectedValue则必须将其转换为您的对象,ComboBox然后您可以访问您的Name属性。

string temp = (cboTypeOfMaterial.SelectedItem as YourObjectType).Name;
于 2013-02-26T07:43:41.127 回答
1

您可以做的是为组合框中的条目创建一个自定义类。这看起来像:

public class ComboBoxItem
{
    public string Display { get; set; }
    public int Id { get; set; }
    public override string ToString()
    {
        return this.Display;
    }
}

然后就可以通过如下代码获取选中的ComboBoxItem:

ComboBoxItem cbi = (ComboBoxItem)cboTypeOfMaterial.SelectedValue;
if(cbi != null)
   // Access the Property you need
于 2013-02-26T07:46:42.233 回答
1

我知道这是一个老问题,但我很惊讶没有人提到:

ComboBox1.GetItemText(ComboBox1.SelectedItem)

它返回所选项目(即DisplayMember)的文本表示形式,并且在涉及数据绑定的情况下很有帮助ComboBox,或任何ListControl与此相关的情况。

于 2017-04-18T13:12:05.773 回答
0
string temp = cboTypeOfMaterial.ValueMember.ToString();
于 2013-02-26T07:46:09.027 回答
-2

我认为您也可以使用 Text 属性,但这不是一个好的解决方案。更好的解决方案是建议@dutzu。

string temp = cboTypeOfMaterial.Text;
于 2013-02-26T07:49:33.963 回答