从文本框设置组合框文本

本文关键字:文本 组合 设置 | 更新日期: 2023-09-27 18:34:34

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

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

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

谢谢

大卫·

从文本框设置组合框文本

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

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 = "";

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

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 的数据不是字符串列表,也可以使用类似的方法,只需确保适当地强制转换项目并比较正确的值即可。