[WPF] AnalonEdit 新增FunctionTip

  • 961
  • 0

摘要:[WPF] AnalonEdit 新增FunctionTip

今天要跟大家分享在AnalonEdit 中加入FunctionTip

其實基本架構我都是仿ICSharpCode.AvalonEdit.CodeCompletion名稱下的CompletionWindow Class

幾個可以參考如下重點


public class FunctionTip : ToolTip
{
       public FunctionTip(TextArea textArea, string Msg)
       {
              //把TextArea傳進來使用, Msg則為ToolTip內容
              //............
              //AttachEvents();
       }

        void AttachEvents()
        {
            this.TextArea.Document.Changed += Document_Changed;
            this.TextArea.Caret.PositionChanged += CaretPositionChanged;
        }

        void DetachEvents()
        {
            this.TextArea.Document.Changed -= Document_Changed;
            this.TextArea.Caret.PositionChanged -= CaretPositionChanged;
        }

        void Close()
        {
            this.IsOpen = false;
            this.DetachEvents();
        }
}

一如往常,我只能把部分分享出來

1. 要把TextArea傳進來 (後續很多程式都還要參考它)

2. TextArea.Caret.PositionChanged 與 TextArea.Document.Changed 兩EventHandler 是開關ToolTip的關鍵

3. 關閉ToolTip時, 一定要DetachEvents()

4. 目前我還沒有找到方法可以直接砍掉ToolTip的資源, 所以在Close()內只是把IsOpen=false & DetachEvents() 

5. 使用端也是仿CompletionWindow的使用方式, 大概如下  (m_toolTip = null, 因此資源回收重責大任交給GC)


m_toolTip = new FunctionTip(AvalonEdit.TextArea, sFuncTip);
m_toolTip.IsOpen = true;
m_toolTip.Closed += delegate
{
       m_toolTip = null;
};

結果如下圖

有任何問題或建議, 歡迎提出! (小編我也只是C#初心者, 還很多東西需要學習)