4
Я использую AvalonEdit в качестве моего TextEditor и не показываю данные в CodeCompletionWindow, когда он вызывается из кнопки Key_Down, однако все работает отлично, когда обрабатывается как событие Text_Entered. Ниже приведен пример кодаAvalonEdit не показывает данные в CompletionWindow для события KeyDown
[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;
};
}
}