1

ScintillaNET正在WPF/C#通过WindowsFormsHost. 但是,该控件似乎存在自动完成问题。我正在使用 aList<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该如何解决这个问题?

4

2 回答 2

4

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

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

那应该对你有用。

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

于 2013-09-19T15:57:25.740 回答
1

我想关于更好性能的首选解决方案是Torgrim Brochmann'a answer,但你也可以让 Scintilla 为你做这种事情:

editor.AutoCOrder = Order.PerformSort;

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

于 2015-11-27T10:30:22.477 回答