ScintillaNET自动完成列表问题

时间:2013-09-02 00:34:52

标签: c# wpf scintilla

我通过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,我该如何解决?

2 个答案:

答案 0 :(得分:4)

Scintilla按排序顺序喜欢列表。尝试做一个

lang.Sort();
editor.AutoComplete.List = lang;

这应该适合你。

底层的Scintilla编辑器具有Autosort功能,但据我所知,这并没有暴露给.NET版本。

答案 1 :(得分:1)

我认为有关更好性能的首选解决方案是Torgrim Brochmann'a answer,但您也可以让Scintilla为您做好准备:

editor.AutoCOrder = Order.PerformSort;

您只需要设置一次,编辑器就会每次为您排序。