【发布时间】:2021-06-20 02:43:59
【问题描述】:
我有一个自定义的 TextBox 控件(它是一个自定义控件,而不是常规控件,可以在其上显示提示文本),其中我有一个 AutoComplete 从我的数据库中获取数据像这样使用DataSet
string[] postSource = aux.Tables[0].AsEnumerable().Select<System.Data.DataRow, String>(x => x.Field<String>("nm_industria")).ToArray();
var source = new AutoCompleteStringCollection();
source.AddRange(postSource);
txb_regClientData.AutoCompleteCustomSource = source;
txb_regClientData.AutoCompleteMode = AutoCompleteMode.Suggest;
txb_regClientData.AutoCompleteSource = AutoCompleteSource.CustomSource;
它给了我这个结果
Image 如果我输入“João”,它会给我正确的结果,但如果我输入“Joao”,它不会出现,从一些关于此事的阅读中我知道 AutoComplete 中没有任何内容可以自动忽略重音,所以我需要自己编写代码。我的问题是,我从哪里开始?我理想的解决方案是覆盖我的自定义控件的AutoComplete 代码中的某些内容,我阅读了 TextBox 的文档但找不到任何内容,所以如果有人能告诉我正确的方向,以便我可以阅读和学习如何做到这一点,将不胜感激。
【问题讨论】:
-
看来this answer 对你来说是一个好的开始。至于其余的,我可能会建议编写一个包含字符串表示形式的包装类,甚至是字典。并在 textchanged 事件中进行过滤?
-
这是一个很好的线索,也通过制作包装器和过滤 textchanged,您的意思是自己制作整个 AutoComplete,或者类似于更改 AutoComplete 获取的输入的东西?
-
" 或类似于更改自动完成输入的内容"实际上这是我的第一个想法。给出一种表示用于过滤和一种表示用于显示。但后来我认为,这可能是不可能的,你必须经历“自己制作整个自动完成”的麻烦
-
设法获得一个更改为最佳建议的标签,整个代码都在我的自定义控件中,我想我会看看我是否可以将
listbox附加到textbox与建议
标签: c# winforms autocomplete textbox custom-controls