【问题标题】:Search while typing in textbox C#在文本框 C# 中键入时搜索
【发布时间】:2014-02-13 19:44:17
【问题描述】:

我有两个文本框。一种是输入CustomerId,另一种是显示客户名称。

我想要做的是:我想在输入CustomerId 时将搜索结果发送到CustomerName 文本框(获取与CustomerId 相关的相关customerName)。这不是自动完成。我想在不按文本框中的 enter 或按按钮的情况下获得结果。

最好的方法是什么。我使用了textbox_textchanged 事件。有没有其他更好的方法来做到这一点?我正在使用实体框架。

【问题讨论】:

标签: c# winforms entity-framework


【解决方案1】:

你可以使用TextChanged event.这里是一个例子:

if(txtCustomerId.Text.Length > 0)
{
    int id;
    if(int.TryParse(txtCustomerId.Text, out id))
    {
       using (var ctx = new MyDbContext())
       {
            // get customer name by Id, for example:
           var name = ctx.Customers.Where(c => c.CustomerId == id)
                    .Select(c => c.CustomerName)
                    .FirstOrDefault();

           if (name != null) txtCustomerName.Text = name;
       }
    }
}

【讨论】:

  • 如果没有 async/awaitTask/ContinueWith 或其他答案中提到的其他替代方案,用户可能会有非常糟糕的 UI 体验。不适用于现实生活。
【解决方案2】:

您可以使用 textbox_textchanged 事件,但是,您需要考虑的一件事是,要使其工作,您需要在文本值更改时触发数据库查询。在每次按键时都这样做是多余的,所以你会想以某种方式限制事件。 (反应式扩展为此提供了一些很棒的功能)。之后,您必须使用 Entity Framework 查询的结果来填充您的文本框。在没有看到您对代码的任何尝试的情况下,很难给出更具体的建议,但这是您所说的功能通常实现的方式。

【讨论】:

    猜你喜欢
    • 2021-08-22
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多