c#组合框使用文本设置值
本文关键字:文本 设置 组合 | 更新日期: 2023-09-27 18:15:42
我有一个组合框farmRegion
,我这样填充
private void fillRegionData() {
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Description", typeof(string));
farmRegion.ValueMember = "ID";
farmRegion.DisplayMember = "Description";
farmRegion.SelectedValue = "ID";
for (int i = 0; i < StaticData.RegionNames.Count; i++)
{
dt.Rows.Add(StaticData.RegionValues[i], StaticData.RegionNames[i]);
}
farmRegion.DataSource = dt;
}
其中StaticData.RegionNames
为:
public static List<string> RegionNames = new List<string>() { "Select Region", "EASTERN", "WESTERN", "NORTHERN", "EASTERN2", "NORTHERN", "MIDDLE" };
, StaticDate.RegionValues
为
public static List<string> RegionValues = new List<string>() { "-10", "1", "2", "3", "4", "5", "6" };
当我保存表单时,我保存了文本的组合框,不是值(这是一个需求问题)。
现在我想重新加载组合框。我已经知道了文本,但是我需要使组合框被激活,并且选项文本已经被选中。
我试过了:
farmRegion.Text = myText
在设置文本farmRegion.Text = myText
之前,设置一个断点并检查combobox
数据源,并确保myText
存在于combobox
中。
如果您处理了任何events of combobox
,请在该事件上设置断点,并检查farmRegion.Text = myText
语句执行后发生了什么。
这两个步骤不能解决你的问题,然后找出你的文本值的索引
int index = farmRegion.FindString(myText);
farmRegion.SelectedIndex = index;
你可以试试这个
farmRegion.SelectedIndex = farmRegion.FindStringExact(myText)
另一种方法:注意:如果没有找到该项目,可能会抛出argumentexception
。
farmRegion.SelectedIndex = farmRegion.Items.IndexOf(myText);
尝试一下,
DataRow[] drs = ((DataTable)cmb.DataSource).Select("Description='" + myText + "'");
if (drs.Length > 0)
{
cmb.SelectedValue = drs[0]["ID"].ToString();
}
else
{
//Value not found
}
编辑:
有时当你设置组合框的文本不会从SelectedValue
返回ValueMember
的值,它可能返回null
和SelectedIndex
可能返回-1
。