c#中的组合框i需要在组合框中填充两个值
本文关键字:组合 两个 填充 | 更新日期: 2023-09-27 18:15:52
我有一个问题与c#代码的组合框我的代码在这里
cmbProjectName.Items.Clear();
if (obds.Tables.Count > 0 && obds.Tables[0].Rows.Count > 0)
{
for (int iCount = 0; iCount < obds.Tables[0].Rows.Count; iCount++)
{
cmbProjectName.Items.Add(obds.Tables[0].Rows[iCount]["Project_Name"].ToString());
}
}
在组合框中添加值,但我将添加该项目的索引,以便在其他搜索上进一步操作,请建议我…
JAEP使用类的解决方案可以工作。绑定到字典是另一种方法,在这里您不必创建额外的类。来源SO问题
在您的例子中,代码将如下所示。用你想要的索引替换iCount。
cmbProjectName.Items.Clear();
Dictionary<int, string> projectsDictionary = new Dictionary<int, string>();
if (obds.Tables.Count > 0 && obds.Tables[0].Rows.Count > 0)
{
for (int iCount = 0; iCount < obds.Tables[0].Rows.Count; iCount++)
{
projectsDictionary.Add(iCount, obds.Tables[0].Rows[iCount]["Project_Name"].ToString());
}
}
cmbProjectName.DataSource = new BindingSource(projectsDictionary, null);
cmbProjectName.DisplayMember = "Value";
cmbProjectName.ValueMember = "Key";
检索键或值的代码。
string value = ((KeyValuePair<int, string>)cmbProjectName.SelectedItem).Value;
int key = ((KeyValuePair<int, string>)cmbProjectName.SelectedItem).Key;
您可以创建一个类
private class Project
{
public int ID {get; set;}
public string Name {get; set;}
public Project (int _id, string _name)
{
ID = _id;
Name = _name
}
}
然后,以这种方式转换方法
List<Project> listPrj = new List<Project>();
if (obds.Tables.Count > 0 && obds.Tables[0].Rows.Count > 0)
{
for (int iCount = 0; iCount < obds.Tables[0].Rows.Count; iCount++)
{
listPrj.Add(new Project(int.Parse(obds.Tables[0].Rows[iCount]["Project_ID"].ToString()), obds.Tables[0].Rows[iCount]["Project_Name"].ToString());
}
}
cmbProjectName.DisplayMember = Name;
cmbProjectName.ValueMember = ID;
cmbProjectName.DataSource = listPrj;
JAEP的解决方案也可以应用于桌面应用程序。请查看有关ValueMember
的MSDN页面。
指定DisplayMember
、ValueMember
和DataSource
后,可以使用ComboBo.SelectedText
和ComboBo.SelectedValue
获得选定文本和选定值。
或者您只是想要索引,您可以使用ComboBo.SelectedIndex
。