我通过ScintillaNET
使用WPF/C#
中的WindowsFormsHost
。但是,似乎控件存在自动完成问题。我正在使用List<string>
来保存要在自动完成下拉菜单中显示的文字。变量lang
是我的List<string>
,而editor
是我的ScintillaNET
编辑:
lang.Add("fprintf");
lang.Add("fscanf");
lang.Add("printf");
lang.Add("scanf");
lang.Add("snprintf");
lang.Add("remove");
lang.Add("rename");
lang.Add("tmpfile");
lang.Add("tmpnam");
lang.Add("fclose");
lang.Add("fflush");
lang.Add("fopen");
lang.Add("freopen");
lang.Add("setbuf");
lang.Add("setvbuf");
editor.AutoComplete.List = lang;
例如,如果我输入printf
,则下拉列表会转到单词printf
。但是,如果我选择稍后在列表中添加的单词,例如fopen
,则不会发生相同的效果(与printf
相同)。下拉的行为似乎不在那里。
但是,这个词已被正确添加到下拉列表中(当我向下滚动列表时),我在那里看到fopen
。
为什么我输入时自动完成框不会转到fopen
,但是当我输入printf
时它会printf
,我该如何解决?
答案 0 :(得分:4)
Scintilla按排序顺序喜欢列表。尝试做一个
lang.Sort();
editor.AutoComplete.List = lang;
这应该适合你。
底层的Scintilla编辑器具有Autosort功能,但据我所知,这并没有暴露给.NET版本。
答案 1 :(得分:1)
我认为有关更好性能的首选解决方案是Torgrim Brochmann'a answer,但您也可以让Scintilla为您做好准备:
editor.AutoCOrder = Order.PerformSort;
您只需要设置一次,编辑器就会每次为您排序。