【问题标题】:AvalonEdit is not showing the data in CompletionWindow for KeyDown eventAvalonEdit 未在 CompletionWindow 中显示 KeyDown 事件的数据
【发布时间】: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


    【解决方案1】:

    得到了答案。在 KeyDown 事件处理程序中添加了 e.Handled = true

    工作代码。

    void TextArea_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Space && (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
        {
            ShowCompletion("");
            e.Handled = true;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      • 1970-01-01
      • 2019-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多