4
J'utilise AvalonEdit comme TextEditor et n'affiche pas les données dans le CodeCompletionWindow lorsqu'il est appelé à partir du bouton Key_Down, mais tout fonctionne correctement lorsqu'il est géré en tant qu'événement Text_Entered. Ci-dessous l'exemple de codeAvalonEdit n'affiche pas les données dans l'événement CompletionWindow for 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;
};
}
}