自动完成TextBox需要C#Winform VS2008澄清

时间:2013-06-10 08:59:04

标签: c# winforms autocompletebox

我正在研究C#winform vs2008项目。要求是在网格和网格中显示行级详细信息一个文本框cloumn用户将键入文本,它应填充自动完成文本。自动填充搜索应仅基于一列,但需要向用户显示其他一列。例子:姓名和电话号码。用户将根据名称进行搜索,只有额外的列电话才能显示。

我有以下查询:

1)数据库很大,是否有免费的自动完成3方工具可用。 2)如何在自动完成中显示多个列。

请告诉我,如何在自动填充功能中显示多个列。

我被困在这里..请帮帮我..

谢谢和问候 拉姆

2 个答案:

答案 0 :(得分:0)

public Class YourClass
{
    public string Name;
    {
       get;
       private set;
    }

    public string PhoneNo;
    {
       get;
       private set;
    }

    public override string ToString()
    {
       return String.Format("{0,-50} {1,-15}", this.Name, this.PhoneNumber);
    }
}

internal class YourForm : Form
{
    ComboBox YourComboBox = new Combobox();
    //Set the style of your combobox such that it looks like a text box

    BindingList<KeyValuePair<string, YourClass> bl = new Binding<string, YourClass>();


    //Query for the data to populate the BindingList
    //Lets say you put the UserId or ContactId of the person in the Key..        

    YourComboBox.DataSource = bl; 
    YourComboBox.DisplayMember = "Value";
    YourComboBox.ValueMember = "Key";     
}

做你自动完成的事情

对于您的需求,没有现成的优雅实施方案。我给你的东西会在表格中显示结果..

例如: -

  • Reese W 32
  • Pamela A 40

但是使用名称,在控件呈现的字体中获取空格字符。
(您必须在编辑模式下查看此答案才能看到它)

如果您想要完全符合您的需要,您将必须使用一些可用的第三方控件或自己编写一个。正如有人说的那样,代码太多了。

答案 1 :(得分:0)

有第三方组件可用于支持多列下拉,例如DevExpress的LookUpEdit,Infragistics的UltraCombo和Telerik的RadMultiColumnComboBox。您可以更改过滤器,然后在键入时弹出下拉列表,但这不会超过Windows自动完成的性能,后者使用第二个线程来枚举候选项。

如果您有这么多数据,如果您的控件库默认启用它们,则可能需要禁用自动调整下拉列和动画的大小。