ComboBox选定的文本或项目

3

我在使用winform,尝试多次获取comboBox选定项的文本,但一直为空,以下是代码:

List<person>op = new List<person>(); op=DAL_O.per();
        foreach(person rt in op )
        {
            comboBox1.DataSource = op;
            comboBox1.DisplayMember = "Name_person";
            comboBox1.ValueMember = "id_person";
        }
    }

    private void button2_Click(object sender, EventArgs e)
    {

      Lbl_full_list.Text+=comboBox1.Items[comboBox1.SelectedIndex].ToString();
//or
      Lbl_full_list.Text+= comboBox1.Text;


    }

也许有人有想法吗?我在Google上搜索了很多结果,但都没有起作用。
3个回答

2

您的绑定代码不正确。

移除其中的foreach应该可以解决问题。


0
首先,您不想将列表中的每个人绑定到组合框中,否则您只能在列表中拥有最多一个项目,您只需要绑定整个列表,因此请删除循环。而且,您可以将列表声明和设置组合成一行,以获得以下结果(甚至可以跳过使用List,但我已经保留了它以提高可读性):
List<person>op = DAL_O.per();

comboBox1.DataSource = op;
comboBox1.DisplayMember = "Name_person";
comboBox1.ValueMember = "id_person";

至于获取所选文本值,我会使用以下方法之一

comboBox1.Text

或者(根据MSDN示例

comboBox1.SelectedItem.ToString()

感谢您对列表的评论。 - naf-naf

0

首先,你为什么要使用 foreach 循环呢?你可以像这样简单地绑定它:

List<person>op = new List<person>(); 
op=DAL_O.per();
comboBox1.DataSource = op;
comboBox1.DisplayMember = "Name_person";
comboBox1.ValueMember = "id_person";

关于你的原始问题,尝试以下方法:

Lbl_full_list.Text += comboBox1.Text

为什么要发布与前两个答案相同的解决方案?这并没有增加任何额外的信息... - leppie
当我开始写作时,并没有任何自动通知我关于已经发布答案的互联网连接,而我使用的连接速度有些缓慢。 - Waqas
没问题 :) 我也会遇到这种情况。 - leppie

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