현재 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>
입니다 :
그런 다음 나는 다음 호출합니다.
자동 완성 기능을 처음 호출하면 정상적으로 작동합니다. 하지만 두 번째로 사용하면 proposals
의 첫 번째 요소가 자동 완성됩니다.
이 코드에 대한 의견이 없습니까? 코드가 더 필요합니까? 실제로이 코드가 필요하며 완료되지 않았습니다. –