1

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

我有以下查询:

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

请让我知道,我如何在自动完成中显示多列。

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

感谢和问候拉姆

4

2 回答 2

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

为自动完成做你正在做的事情

对于您的需要,没有现成且优雅的实现。我给你的结果会像表格一样显示出来。

例如:-

  • 里斯 W 32
  • 帕梅拉 A 40

但是使用名称,以控件呈现的任何字体占用空间字符..
(您必须在编辑模式下查看此答案才能看到它)

如果你想要你所需要的,你将不得不使用一些可用的 3rd 方控件或编写你自己的一个。正如有人所说,代码太多了..

于 2013-06-10T15:18:24.980 回答
0

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

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

于 2013-06-10T22:18:18.783 回答