2

一篇文章有Name​​ 和Price属性。我使用 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

4 回答 4

3

您必须转换SelectedItem为适当的对象。

private void cmbDataList_SelectedIndexChanged(object sender, EventArgs e)
{
    var sel = (YourObject)cmbDataList.SelectedItem;
    txt.Text = sel.Price.ToString();
}
于 2013-07-01T10:50:04.257 回答
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在事件处理程序中获取它。然后将返回价格;SelectedIndexChangedSelectedValue

cmbDataList.ValueMember = "Price";

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


}
于 2013-07-01T10:50:42.497 回答
0

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

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

现在,您选择的显示器将与该值同步,您将能够使用它..

在此处获取更多信息: 填充组合框

于 2013-07-01T10:54:04.297 回答
0

需要设置 ValueMember 可以这样设置

cmbDataList.ValueMember = "ID";

然后你在 cmbDataList_SelectedIndexChanged 事件上编写代码

可能这会帮助你

var sel = cmbDataList.SelectedValue

于 2013-07-01T10:58:05.087 回答