【问题标题】:ComboBox selected text or item组合框选定的文本或项目
【发布时间】:2011-07-27 09:03:19
【问题描述】:

我在winform中工作我尝试了很多次来捕捉组合框所选项目的文本,但我不能,它总是空的,这是代码

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;


    }

也许有人有想法?我在谷歌上搜索了很多,结果没有用

【问题讨论】:

    标签: c# .net winforms


    【解决方案1】:

    您的绑定代码不正确。

    删除它周围的foreach,应该可以解决问题。

    【讨论】:

      【解决方案2】:

      首先,您不想将列表中的每个人都绑定到组合框,否则列表中最多只有一项,您只想绑定整个列表,因此请删除循环.您还可以将列表声明和设置组合成一行来获得它(您甚至可以跳过使用列表,但为了便于阅读,我将其保留:

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

      至于获取选定的文本值,我会使用任一

      comboBox1.Text
      

      或 (as per MSDN example)

      comboBox1.SelectedItem.ToString()
      

      【讨论】:

      • 感谢您对列表的评论
      【解决方案3】:

      首先你为什么要使用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
      

      【讨论】:

      • 为什么发布与前两个答案相同的解决方案?它没有添加任何额外的信息...
      • 当我开始写作时没有任何内容,而且我使用的互联网连接有点慢,无法自动通知我在写作时已经发布的答案..
      • 没问题 :) 我也遇到过。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-17
      • 1970-01-01
      • 2016-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多