現在、Textコンポーネントに対してScintillaを使用してIDEを作成しています。しかし、オートコンプリートには固定されていない問題がいくつかあります。Scintilla.NETオートコンプリートは自動的に最初の要素(C#)を選択します
入力後に提案リストが自動的に表示されます。オブジェクト名またはクラス名の後ろに指定します。
それから私は、次のように呼び出します。
int pos = _editor.NativeInterface.GetCurrentPos();
string word = _editor.GetWordFromPosition(pos - 1);
if (string.IsNullOrEmpty(word))
return;
if (Objects.Keys.Contains(word))
{
System.Reflection.MemberInfo[] memberInfos = Reflector.PublicMembersOf(Objects[word]);
List<String> proposals = new List<string>();
foreach (System.Reflection.MemberInfo mi in memberInfos)
{
string member = mi.ToString();
if (Reflector.IsRealMethod(mi))
proposals.Add(mi.ToString().Split(" ".ToCharArray(), 2)[1].Replace(" ", ""));
}
proposals.Sort();
_editor.AutoComplete.Show(0, proposals);
}
Objects
は、すべてのオブジェクトとそこに対応するタイプが保存されているHashMap<String, Type>
です。
初めてオートコンプリートを呼び出すと正常に動作します。しかし、2回目にそれを使用すると、proposals
という最初の要素が自動完成されます。
これについてのコメントはありませんか?これ以上のコードは必要ですか?これは本当に必要です。 –