【发布时间】:2015-11-08 10:40:45
【问题描述】:
我使用 AvalonEdit 作为我的 TextEditor,并且在从 Key_Down 按钮调用 CodeCompletionWindow 时没有显示数据,但是当作为 Text_Entered 事件处理时一切正常。下面是示例代码
[Serializable]
public class CodeEditor : TextEditor
{
public CompletionWindow CompletionWindow = null;
public CodeEditor()
{
//CompletionWindow pops up without any data.
this.TextArea.KeyDown += TextArea_KeyDown;
//CompletionWindow pops up and data is displayed.
this.TextArea.TextEntered += this.OnTextEntered;
}
void TextArea_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Space && (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
{
ShowCompletion("");
}
}
void OnTextEntered(object sender, TextCompositionEventArgs e)
{
//e.Handled = true;
if (e.Text == "\n" || e.Text == "\t" || e.Text == " ")
{
return;
}
this.ShowCompletion(e.Text);
}
private void ShowCompletion(string enteredText)
{
CompletionWindow = new CompletionWindow(TextArea);
IList<ICompletionData> data = CompletionWindow.CompletionList.CompletionData;
data.Add("ABC");
CompletionWindow.Show();
CompletionWindow.Closed += delegate
{
CompletionWindow = null;
};
}
}
【问题讨论】:
标签: code-completion avalonedit