編輯操作數十種(複製、貼上、字體、插圖…),若全部寫在 TextDocument 會導致類別膨脹。引入 指令模式:
EditorAction:定義 HotKey、ActionName、IsEnabled、Execute、TestHotKey 等統一介面。EditorCopyAction 等,封裝單一操作邏輯,熱鍵綁定(如 Ctrl+C)。TextDocument.Actions 集合管理所有指令,焦點處自動掃描熱鍵觸發;UI 依 IsEnabled 動態啟用/禁用按鈕選單。單次複製同時寫入多種格式,貼上時智慧選擇:
DataObject + SetData(format, data) 寫入:純文字(相容記事本)、自訂 XML 序列化(保留完整格式與物件結構)。Clipboard.GetDataObject() 取得 IDataObject,優先檢測自訂格式 → 解析 XML 還原物件樹;次之純文字 → 建立基本字符元素。VBScriptEngine 繼承 VsaEngine,註冊全域物件(document、dbconnection、eventobj、vbsystem)、必要組件參考。TextDocumentVsaSite 實作 IVsaSite,GetGlobalInstance 依名稱回傳對應物件;OnCompilerError 處理編譯錯誤。document.all 實作文檔元素具名且動態變化,需執行期產生型別:
AssemblyName、AssemblyBuilder、ModuleBuilder、TypeBuilder(AllElements)。DefineField 建立 public object 欄位。CreateType 產生型別並實例化,再用 InvokeMember 填入元素參考。onchange,內容修改時查找 元素名_OnChange 並執行。vbsystem 提供 Alert、Confirm、Prompt、DebugPrint 等全域函數,腳本可直接呼叫。