【问题标题】:ScintillaNET Auto-Completion List IssueScintillaNET 自动完成列表问题
【发布时间】:2013-09-02 00:34:52
【问题描述】:

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

【问题讨论】:

    标签: c# wpf scintilla


    【解决方案1】:

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

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

    这应该对你有用。

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

    【讨论】:

      【解决方案2】:

      我猜想获得更好性能的首选解决方案是Torgrim Brochmann'a answer,但您也可以让 Scintilla 为您进行排序:

      editor.AutoCOrder = Order.PerformSort;
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-17
        • 1970-01-01
        • 1970-01-01
        • 2020-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多