从文本框中设置组合框文本

时间:2012-05-18 17:32:13

标签: c# winforms combobox

我已将用户提交的内容加载到我们办公室的c#winform中,以便在正式​​添加到数据库之前进行处理。用户可以将“推荐人”作为两个文本字段 - 名字和姓氏提交。在办公室我想要一个组合框将所有现有的引用加载,然后名称的前几个字母将组合框推进到它需要的区域。我想做这样的事情,取名字的前两个字母并用它来初始化组合框。

if (txtrefFirstName.TextLength > 2)
{
   string firstStart = "" + txtrefFirstName.Text[0] + txtrefFirstName.Text[1];
   firstStart = firstStart.ToUpper();
   ddlReferring.SelectedText.StartsWith(firstStart);
}
else
   ddlReferring.Text = "";

有任何想法或建议可以让它发挥作用吗?

由于

David K。

2 个答案:

答案 0 :(得分:2)

你可以写这样的东西......

foreach (string item in ddlReferring.Items)
{
    if (item.StartsWith(firstStart))
    {
        ddlReferring.SelectedText = item;
        break;
    }
}

答案 1 :(得分:1)

假设ddl的数据源是String对象的List,您应该能够对数据源本身进行一些比较。我倾向于使用Linq来做这样的事情,但这不是绝对必要的,只是更短。

if (txtrefFirstName.TextLength > 2)
{
   string firstStart = txtrefFirstName.Text.Substring(0,2).ToUpper();
   string Selection = ddlReferring.DataSource.Where(a=>a.StartsWith(firstStart)).FirstOrDefault();
   ddlReferring.SelectedText = Selection ?? "";
}
else
   ddlReferring.Text = "";

选择行也可以直接来自项目集合

string Selection = ddlReferring.Items.OfType<string>().Where(a=>a.StartsWith(firstStart)).FirstOrDefault();

或者,如果你真的不想使用Linq ......

string Selection = "";
foreach (object item in ddlReferring.Items)
    if (item.ToString().StartsWith(firstStart))
    {
        Selection = item.ToString();
        break;
    }

即使ddl的数据不是字符串列表,也可以使用类似的方法,只需确保适当地转换项目并比较正确的值。