C# 在WinC窗体中向组合框添加值
我正在尝试向组合框添加值。我可以设置文本,但不能设置值。我知道我可以用datatable填充combobox,但我想手动填充以保持对数据显示的完全控制。我可以做ComboBox.Items.Add,但这只是设置文本。如何添加与文本不同的主键值C# 在WinC窗体中向组合框添加值,c#,winforms,combobox,C#,Winforms,Combobox,我正在尝试向组合框添加值。我可以设置文本,但不能设置值。我知道我可以用datatable填充combobox,但我想手动填充以保持对数据显示的完全控制。我可以做ComboBox.Items.Add,但这只是设置文本。如何添加与文本不同的主键值 public Form1() { InitializeComponent(); OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.
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();
}
试试这个:
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();
}
您可以按如下方式获取所选项目的键的值:
((KeyValuePair<int, string>)cbQb.SelectedItem).Key
添加对象,然后使用DisplayMember或重写对象以查看。那位先生正是我要找的。我确实必须将索引更改为keyValue,但调试很容易。非常感谢你!