文本編輯器需同時支援客戶端/伺服器(C/S)與瀏覽器/伺服器(B/S)兩種部署模式。B/S 架構下無法直接連接資料庫,必須透過伺服器端代理。為消除雙模式程式碼差異,採用 ADO.NET 介面導向設計:
IDbConnection、IDbCommand、IDataReader、IDbDataParameter 等(定義於 System.Data 命名空間)。IDataReader 的物件。TextChar:基本字符物件,重寫 RefreshSize 使用 Graphics.MeasureString 計算寬度,採用 StringFormat.GenericTypographic 移除額外空白。TextCharTab:繼承 TextChar,處理不定寬製表符。步長設為 4 個底線字符寬度,右邊界對齊至步長整數倍,透過取模運算動態計算寬度。TextParagraph:段落物件,非容器,儲存對齊資訊,顯示類似 Word 的段落符號(硬換行)。TextLineEnd:行結束物件,模擬軟換行(Shift+Enter)。TextObject(抽象基類):表示文檔中的嵌入物件,支援擴展性。TextImage:繼承 TextObject,重寫 RefreshView 繪製圖片,實作 FromXML/ToXML 序列化(Base64 編碼二進位資料)。參考 Word 與 VS.NET 設計器,物件被選中時顯示 8 個控制點(內控制點),分為內/外兩類,編號 0~7。滑鼠移至控制點上方時切換對應游標(Cursors.SizeNWSE 等),拖曳時即時重繪物件邊界。實作需處理:座標轉換、命中測試、游標管理、拖曳過程中的臨時矩形繪製與最終確認。
Microsoft.VisualBasic.Vsa.VsaEngine 建構 VB.NET 腳本環境。document(TextDocument)、dbconnection、eventobj、vbsystem(提供 Alert、Confirm 等)。document.all 動態建構:使用 System.Reflection.Emit 在執行期產生 AllElements 型別,依文檔中具名元素動態建立公開欄位,支援 document.all.元素名 直接存取。onchange,內容變更時查找並執行對應 元素名_OnChange 程序。