摘要:[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#初心者, 還很多東西需要學習)