C# 从文本框设置组合框文本

C# 从文本框设置组合框文本,c#,winforms,combobox,C#,Winforms,Combobox,我让用户提交的内容被加载到我们办公室的c#winform中进行处理,然后正式添加到数据库中。用户可以提交“推荐人”作为两个文本字段“名字”和“姓氏”。在办公室里,我想有一个组合框,将所有现有的推荐人都加载进去,然后用名字的前几个字母将组合框推进到它需要的区域。我想这样做,取名字的前两个字母并用它初始化组合框 if (txtrefFirstName.TextLength > 2) { string firstStart = "" + txtrefFirstName.Text[0] +

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

if (txtrefFirstName.TextLength > 2)
{
   string firstStart = "" + txtrefFirstName.Text[0] + txtrefFirstName.Text[1];
   firstStart = firstStart.ToUpper();
   ddlReferring.SelectedText.StartsWith(firstStart);
}
else
   ddlReferring.Text = "";
有什么想法或建议可以让它发挥作用吗

谢谢


大卫·K.

你可以写这样的东西

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

你可以这样写

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

假设ddl的数据源是一个字符串对象列表,您应该能够对数据源本身进行一些比较。我倾向于使用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 = "";
选择行也可以直接来自items集合

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

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

假设ddl的数据源是字符串对象列表,您应该能够对数据源本身进行一些比较。我倾向于使用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 = "";
选择行也可以直接来自items集合

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

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

您是直接在组合框中键入名称,还是在单独的文本框控件中键入名称?您必须在ddl上执行foreach循环,然后检查项目是否开始(firstStart)然后选择它。没有语法错误,只是工作不正常。combobox可以自动完成,但我想前进到list,使其接近实际情况。您是直接在combobox中键入名称,还是在单独的TextBox控件中键入名称?您必须在DDL上执行foreach循环,然后检查item StartsWith(firstStart)是否已启动,然后选择它。没有语法错误,只是工作不正常。组合框可以自动完成,但我想前进到列表,以接近它将是什么。这使我在正确的方向上,略有改变,在编辑中发布。这使我在正确的方向上,略有改变,在编辑中发布。