【问题标题】:c# combobox set the value using textc#组合框使用文本设置值
【发布时间】:2014-07-31 08:54:54
【问题描述】:

我有一个组合框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

但仍然选择了第一个选项。

【问题讨论】:

  • 组合框中的文本代表它的值。您想设置文本并使其代表不同的值吗?

标签: c# winforms combobox windows-forms-designer


【解决方案1】:

在设置文本farmRegion.Text = myText 之前,设置一个断点并检查combobox 数据源,并确保myText 存在于combobox 中。

如果您处理了任何events of combobox,请在该事件上设置一个断点并检查在执行farmRegion.Text = myText 语句后发生了什么。

这两个步骤并不能解决您的问题,然后找出您的文本值的索引为

int index = farmRegion.FindString(myText);
farmRegion.SelectedIndex = index;

【讨论】:

  • 也许有点晚了,但我们可以将文本设置为一些随机值吗?例如farmRegion.Text='some value that isn't in datasource'
【解决方案2】:

你可以试试这个

farmRegion.SelectedIndex = farmRegion.FindStringExact(myText)

另一种方法: 注意:如果找不到该项目,这可能会抛出 argumentexception

farmRegion.SelectedIndex = farmRegion.Items.IndexOf(myText);

【讨论】:

  • 不知为何,.Text 又开始工作了 :) :),
  • 问题可能与数据源有关..可能是文本不会出现在数据源中..
【解决方案3】:

试试这样,

DataRow[] drs = ((DataTable)cmb.DataSource).Select("Description='" + myText + "'");
if (drs.Length > 0)
{
    cmb.SelectedValue = drs[0]["ID"].ToString();
}
else
{
    //Value not found
}

已编辑:

有时,当您设置组合框的文本时,不会从SelectedValue 返回ValueMember 的值,它可能会返回nullSelectedIndex 可能会返回-1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 2013-06-08
    • 1970-01-01
    相关资源
    最近更新 更多