Winforms开发技巧大揭秘,DevExpress查找编辑器自动搜索模式
< 返回列表时间: 2020-01-03来源:OSCHINA
【围观】麒麟芯片遭打压成绝版,华为亿元投入又砸向了哪里?>>>
下载DevExpress v19.2完整版 DevExpress v19.2汉化资源获取
DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅、美观且易于使用的应用程序。在前面的教程文章中,技术团队宣传了针对DevExpress LookUpEdit和GridLookUpEdit控件新的AutoSuggest模式。 简而言之,AutoSuggest允许编辑器执行自定义任务来检索下拉菜单项(因此编辑器具有虚拟数据源,每次用户在查找文本框中输入值时,虚拟数据源都会更改)。大多数人将这个新功能用于空的、未绑定的编辑器。如果您的查找编辑器绑定到静态数据源,则源记录将仅在一种使用情况下显示:当文本框为空并且用户按下下拉按钮时。

到目前为止,如果您希望用户搜索查找记录,则不得不使用earchLookUpEdit。 该编辑器满足了业务需求,但缺少当今用户对高级桌面应用程序所期望的一些现代功能。SearchLookUpEdit带有”locked”文本框,该文本框不允许用户通过键盘输入文本值,该文本框不允许用户通过键盘输入文本值。为了找到记录,它激活了一个下拉面板,并允许用户在其嵌入式查找面板中输入搜索条件。

使用v19.2,您能够将LookUpEdit \ GridLookUpEdit编辑器绑定到数据源,将Properties.SearchMode更改为AutoSearch和voila:使用户能够在编辑器的文本框中输入搜索值——匹配的记录将自动显示在查找的下拉菜单中。

每当实施一项新功能时,技术团队都会竭尽所能将核心功能扩展到多个产品中。例如,这项新的自动搜索功能将接受Find Panel所使用的相同语法。

就像AutoSuggest一样,当用户输入文本值时,AutoSearch会触发自己的事件(AutoSearch事件)。 尽管您不需要处理事件(一切都可以直接使用),但已为您提供了在需要时进行处理的功能。例如您可以在事件处理程序中使用e.SetParameters方法来微调搜索结果,此方法接受两个参数,这些参数类似于WinForms数据感知控件中显示的Find Panels所使用的ParserKind和Condition属性:
using DevExpress.Data.Filtering;

private void LookUpEdit1_AutoSearch(object sender, LookUpEditAutoSearchEventArgs e)
{
e.SetParameters(FindPanelParserKind.And, FilterCondition.StartsWith);
}

由于AutoSuggest和AutoSearch事件的参数均来自同一基类,因此适用自定义突出显示API,下面的示例说明了如何在与文本框中输入的值匹配时突出显示整个数据字段值。

private void LookUpEdit1_AutoSearch(object sender, LookUpEditAutoSearchEventArgs e)
{
e.SetParameters(FindPanelParserKind.And, FilterCondition.StartsWith);
e.SetHighlightRanges(CustomHightlight(e.Text));
}

static Func<string, string, DisplayTextHighlightRange[]> CustomHightlight(string userText)
{
return (displayText, fieldName) =>
{
if (fieldName == "ShipCity" || fieldName == "ShipCountry")
{
if (displayText.StartsWith(userText))
return new DisplayTextHighlightRange[] {
new DisplayTextHighlightRange(0, displayText.Length) };
}
return null;
};
}
DevExpress技术群:540330292 欢迎一起进群讨论
热门排行