其實就是C#訪問VISIO的自動化模型,以前做了不少C#和Excle及word 的交互工程,在用VS2010 嘗試開發Visio 2007項目時,卻忘了當時要安裝Office 2003 開發SDK。所以開發visio工程,也要下載安裝office 2007 開發sdk。英文版的。
然后就建立一個C#項目。在工具箱上點右鍵,選擇“選擇項”,在打開的對話框中選擇“com控件",在其中找到visio 12.0 drawing control。然后該控制就被添加到工具箱。還需要引用類型庫否?貌似是不需要。
在cs文件中using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Visio;之后,就可以引用對象:
也可以直接訪問拖上form的visio 控件。
axDrawingControl1.Window.ShowRulers = 0;
axDrawingControl1.Window.ShowGuides = 0;
axDrawingControl1.Window.ShowPageTabs = false;
axDrawingControl1.Window.Zoom = -1;
axDrawingControl1.Window.Application.Documents.OpenEx(stencilPath,(short)VisOpenSaveArgs.visOpenRO+(short)VisOpenSaveArgs.visOpenDocked);
注意由於office系列的本質是vb模型,所以在C#中調用要有一些變化,比如showguides等屬性設置不能直接用true和false。以前在開發excle時,還有調用模型方法時VB的變參到C#調用的轉換問題。下面的openEx,將以只讀和dock方式打開一個自己創建的“模具”(.vss文件),這個模具將同樣出現在控件窗口內,供visio文檔繪圖使用。