一篇文章有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;
}
答案 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