我正在研究 C# winform vs2008 项目。要求是将行级详细信息显示到网格中,并且网格一个文本框 cloumn 用户将键入文本,并且它应该填充自动完成文本。自动完成搜索应该只基于一列,但需要向用户显示额外的一列。示例:姓名和电话号码。用户将根据名称进行搜索,仅附加列电话应显示目的。
我有以下查询:
1) 数据库很大,有没有免费的自动完成 3 方工具可用。?2)如何在自动完成中显示多列。
请让我知道,我如何在自动完成中显示多列。
我被困在这里..请帮帮我..
感谢和问候拉姆
我正在研究 C# winform vs2008 项目。要求是将行级详细信息显示到网格中,并且网格一个文本框 cloumn 用户将键入文本,并且它应该填充自动完成文本。自动完成搜索应该只基于一列,但需要向用户显示额外的一列。示例:姓名和电话号码。用户将根据名称进行搜索,仅附加列电话应显示目的。
我有以下查询:
1) 数据库很大,有没有免费的自动完成 3 方工具可用。?2)如何在自动完成中显示多列。
请让我知道,我如何在自动完成中显示多列。
我被困在这里..请帮帮我..
感谢和问候拉姆
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";
}
为自动完成做你正在做的事情
对于您的需要,没有现成且优雅的实现。我给你的结果会像表格一样显示出来。
例如:-
但是使用名称,以控件呈现的任何字体占用空间字符..
(您必须在编辑模式下查看此答案才能看到它)
如果你想要你所需要的,你将不得不使用一些可用的 3rd 方控件或编写你自己的一个。正如有人所说,代码太多了..
有第三方组件可用于支持多列下拉,例如 DevExpress 的 LookUpEdit、Infragistics 的 UltraCombo 和 Telerik 的 RadMultiColumnComboBox。您可以更改过滤器,然后在键入时弹出下拉列表,但这不会超过 Windows 自动完成的性能,它使用第二个线程来枚举候选者。
如果您有这么多数据,如果您的控件库默认启用它们,则可能需要禁用自动调整下拉列和动画的大小。