访问选择winforms组合框的属性

时间:2013-07-01 10:46:55

标签: c# .net winforms

一篇文章有​​NamePrice属性。我使用Name属性来显示组合框cmbDataList中的文章,如下所示

public Form1()
{
    InitializeComponent();
    cmbDataList.DataSource = GetData();
    cmbDataList.DisplayMember = "Name";
}

在用户选择了优先文章之后,我想使用它的Price属性来分配到同一表单上的文本框。那么,如何访问Price属性?

private void cmbDataList_SelectedIndexChanged(object sender, EventArgs e)
{
    //var sel = cmbDataList.SelectedItem;
}

4 个答案:

答案 0 :(得分:3)

您必须将SelectedItem投射到正确的对象。

private void cmbDataList_SelectedIndexChanged(object sender, EventArgs e)
{
    var sel = (YourObject)cmbDataList.SelectedItem;
    txt.Text = sel.Price.ToString();
}

答案 1 :(得分:3)

除非所有名称都是唯一的,否则您将需要一个唯一的标识符来引用,例如articleID。

从这里开始,像这样设置ComboBox的ValueMember;

cmbDataList.ValueMember = "ID";

然后你可以在事件处理程序上获得你的价值;

private void cmbDataList_SelectedIndexChanged(object sender, EventArgs e)
{
    var sel = cmbDataList.SelectedValue;

    //From here you're going to need to find your article with that particular ID.
}

可替换地。您可以将DisplayMember作为文章名称,将价格作为ValueMember,然后将其放入SelectedIndexChanged的事件处理程序中,方法与上面相同。 SelectedValue然后会返回价格;

cmbDataList.ValueMember = "Price";

private void cmbDataList_SelectedIndexChanged(object sender, EventArgs e)
{
    var yourSelectedPrice = cmbDataList.SelectedValue;


}

答案 2 :(得分:0)

假设GetData()返回一个表,您还需要编写ValueMember ......就像这样:

InitializeComponent();
    cmbDataList.DataSource = GetData();
    cmbDataList.DisplayMember = "Name";
    cmbDataList.ValueMember = "Price";

现在,您选择的显示将与值同步,您将可以使用它..

在此处获取更多信息:  Populate combobox

答案 3 :(得分:0)

您需要设置ValueMember您可以这样设置

cmbDataList.ValueMember =“ID”;

然后你在cmbDataList_SelectedIndexChanged事件

上编写代码

可能会帮助你

var sel = cmbDataList.SelectedValue