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。

4

2 回答 2

2

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

foreach (string item in ddlReferring.Items)
{
    if (item.StartsWith(firstStart))
    {
        ddlReferring.SelectedText = item;
        break;
    }
}
于 2012-05-18T17:41:25.210 回答
1

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

于 2012-05-18T17:46:33.813 回答