C# - 从下拉框中获取所选的值

3

我有一个comboBox控件,ValueMember = IDDisplayMember = 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 的值。


只需使用cboTypeOfMaterial.SelectedItem.ToString()即可。试一试吧。 - Khadim Ali
6个回答

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

4

SelectedValue会返回在ValueMember中定义的属性的值,SelectedItem将返回所选对象的整个对象,如果您想获取与SelectedValue不同的另一个值,则必须在ComboBox中进行对象转换,然后可以访问Name属性。

string temp = (cboTypeOfMaterial.SelectedItem as YourObjectType).Name;

谢谢,这个可行并且是新的东西,所以我会使用它! - Leron

2

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

ComboBox1.GetItemText(ComboBox1.SelectedItem)

该函数返回所选项目的文本表示(即 DisplayMember ),在涉及数据绑定的 ComboBox 或任何 ListControl 的情况下非常有用。


1
你可以创建一个自定义类来为comboBox中的条目设置样式,示例如下:
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

0
string temp = cboTypeOfMaterial.ValueMember.ToString();

-2

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

string temp = cboTypeOfMaterial.Text;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接