【问题标题】:Adding a value to a ComboBox in C# WinForm在 C# WinForm 中向 ComboBox 添加值
【发布时间】:2013-08-17 22:16:14
【问题描述】:

我正在尝试向组合框添加一个值。我可以设置文本,但不能设置值。我知道我可以用数据表填充组合框,但我想手动完成以完全控制数据显示。我可以做 ComboBox.Items.Add(),但这只是设置文本。如何添加值(这将是一个主键,与文本不同)?

    public Form1()
    {
        InitializeComponent();
        OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Drew\Documents\Visual Studio 2012\Projects\Football\Football\db\FB_DB.mdb;User Id=admin;Password=;");

        //Load QB DropDown
        conn.Open();
        OleDbCommand cmd = new OleDbCommand("select PlayerID,LastName,FirstName from tb_players where Pos = 'QB' Order By LastName", conn);
        OleDbDataReader reader = cmd.ExecuteReader();

        string plyrName = "";

        while (reader.Read())
        {
            plyrName = reader["LastName"].ToString() + ", " + reader["FirstName"].ToString();
            cbQb.Items.Add(plyrName);
        }
        conn.Close();
    }

【问题讨论】:

标签: c# winforms combobox


【解决方案1】:

试试这个:

public Form1()
{
    InitializeComponent();
    OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Drew\Documents\Visual Studio 2012\Projects\Football\Football\db\FB_DB.mdb;User Id=admin;Password=;");

    //Load QB DropDown
    conn.Open();
    OleDbCommand cmd = new OleDbCommand("select PlayerID,LastName,FirstName from tb_players where Pos = 'QB' Order By LastName", conn);
    OleDbDataReader reader = cmd.ExecuteReader();

    string plyrName = "";
    int keyValue;

    cbQb.DisplayMember = "Value";
    cbQb.ValueMember = "Key";

    while (reader.Read())
    {
        plyrName = reader["LastName"].ToString() + ", " + reader["FirstName"].ToString();
        index = Convert.ToInt32(reader["primaryKeyColumnValue"]);

        KeyValuePair<int, string> cmbItem = new KeyValuePair<int, string> (index ,plyrName)
        cbQb.Items.Add(cmbItem);
    }
    conn.Close();
}

你可以像这样获取选中项的key的值:

((KeyValuePair<int, string>)cbQb.SelectedItem).Key

【讨论】:

  • 太棒了。这位先生正是我要找的。我确实必须将“索引”更改为“keyValue”,但易于调试。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多