Visio 二次開發常見問題解決方案匯總
深耕 Visio 二次開發多年,整理九大高頻問題與解決方案,涵蓋屬性值轉換、Cell 讀寫、存在性判斷、ShapeData 行號取得、圖形存在性檢查、UI 客製
Visio 二次開發:文件列印與預覽完整技術指南
Visio 文件列印是二次開發常見需求。Document.PrintOut 提供多種列印模式,搭配 Page.Picture 屬性可實現預覽,但需處理 IPic
Visio 二次開發:實作設備變更追蹤與操作日誌機制
在基於 Visio 的繪圖系統中,必須精確掌握使用者對設備的新增、刪除、修改操作,才能確保資料一致性並支援圖紙版本管理。本文示範如何利用 Visio 事件模型建
Visio 二次開發實戰:將圖紙設備資訊批次存入資料庫
在 Visio 二次開發專案中,發布圖紙時往往需將圖檔二進制內容與圖形的自訂屬性(設備資訊)同步寫入資料庫。本文分享一套完整的設備資訊擷取與存儲方案。 資料庫
C# 線程同步機制全解析:從 volatile 到 ReaderWriterLock
在多線程程式設計中,資源同步是核心課題。.NET 提供了豐富的同步工具箱,針對不同場景選擇適當機制,才能兼顧效能與正確性。本文系統整理七種常見同步方式,並附上實
C# 建立捷徑完整指南:使用 WSH 實現桌面捷徑建立
對於大多數 Windows 使用者來說,建立捷徑是輕而易舉的基本操作,但對程式開發人員而言,在 .NET 環境下要為應用程式自動建立捷徑卻並非直觀簡單。.NET
C# List.Remove 失效陷阱:引用相等 vs 值相等,正確實現 IEquatable 避免「不死對象」
嘗試從集合移除對象後,對象仍留在集合中?這是因為 List<T>.Remove 使用預設相等比較器 (EqualityComparer<T&g
C# 操作 Lotus Notes 郵件完整指南:COM 互操作實現收發與附件處理
通過 Lotus Domino Objects COM 組件,.NET 應用可訪問 Domino 服務器/Notes 客戶端對象模型,實現郵件收發、附件處理、用
C# 多態性核心機制詳解:虛方法、重寫與運行時綁定實戰
多態是面向對象三大支柱之一 (封裝、繼承、多態)。核心規則:子類對象可作為父類對象使用。當父類引用指向子類對象並調用虛方法時,執行的是子類的重寫實現。 四大知
C# 反射 核心概念與實戰詳解:動態加載程序集、創建實例、調用方法
反射封裝了程序集、模塊、類型,支援運行時動態創建實例、綁定類型、調用方法/訪問字段屬性、讀取特性。本文通過最簡單示例演示核心流程。 準備:類庫項目 編譯為
構建屬於自己的 MiniORM 框架 (零):ORM 基礎概念與映射模式全景
在動手寫代碼前,必須建立正確的 ORM 理論認知。本文系統梳理 ORM 產生背景、核心映射模式 (繼承/組合)、對象生命週期、事務處理、映射規則定義方式。 O
構建屬於自己的 MiniORM 框架 (一):反射與 Attribute 在 ORM 映射中的應用
本系列首篇,奠基 MiniORM 實現基石:反射 與 自定義 Attribute 的結合,實現運行時動態獲取對象-數據庫映射規則。 反射 基礎 反射允許運行時
構建屬於自己的 MiniORM 框架 (二):核心映射特性設計與事務處理策略
承接上篇 ORM 基礎概念,本文詳細設計 MiniORM 的核心映射特性 (Attribute)、三大核心類架構、繼承/組合映射策略、事務處理方案。 架構設計
MiniORM 實戰測試代碼與 Bug 修復:驗證自定義 ORM 框架功能
針對 MiniORM 反饋的 Bug 及使用困惑,本文提供完整測試代碼、實體類定義、數據庫結構,並修復兩個關鍵 Bug。 Bug 修復 1. PubFuncs
C# 正則表達式詳解:System.Text.RegularExpressions 核心類與實戰模式
.NET 基礎類庫提供 System.Text.RegularExpressions 命名空間,功能強大且兼容 Perl 5 語法。本文系統介紹核心類、靜態方法
C# 串口通信實戰:封裝 SerialPort 類完整 WinForms 示例
本文提供基於 System.IO.Ports.SerialPort 的串口通信 WinForms 完整測試程序,含參數配置、收發十六進制數據、異常處理。 核心
C# Socket 網絡編程快速入門:從原理到 TCP/UDP 完整示例
.NET 提供 System.Net.Sockets 命名空間封裝 Berkeley Socket API,支援同步/異步、TCP/UDP 通訊。本文從原理講起
C# 利用 Attribute 與反射實現短信模板引擎:告別硬編碼 Replace
短信模板關鍵字替換是常見需求。硬編碼 template.Replace([用戶名], name).Replace([日期], date)... 不僅繁瑣,擴展性