本次准備的培訓,除了全面介紹Visio的相關知識和概念,還以實戰開發的方式加深Visio二次開發的知識掌握,另外還通過試題來考核各個學生的掌握情況,本文主要是介紹我根據自己一直以來的Visio開發經驗所得,准備的Visio二次開發試題,並提供相應的解答分析,希望大家批評指正,一起溝通交流。
雖然Visio已經在各行各業應用的很廣,不過這兩年來關注的博客文章,Visio二次開發方面的文章除了我零星寫的一些,其他同行基本上沒有文章涉及(可能是沒有時間寫這方面經驗),雖然目前已經很少從項目上去升華、研究Visio二次開發方面的工作(除非又有一些特殊的項目合作需要)。因此,如果這方面我自己有一些新的心得或者資料,我是很樂意和大家一起分享。
一)判斷題(每題5分,共20題,總分100分)
1)部署Visio二次開發的應用程序不需要安裝Office Visio。 答案:錯,開發、部署都需要。
2)Visio的“以開發人員模式運行”模式,能幫助我們查看更多、更細的Visio圖元的信息。 答案: 對。
3)形狀數據窗口顯示的字段信息,是Visio圖元內部固定的數據,不能通過代碼進行更改。 答案:錯,可以通過代碼修改,增加、修改、刪除均可。
4)通過宏錄制功能,可以查看某個功能的具體實現代碼,也能實現對圖元(Shape對象)等對象屬性的調試跟蹤。 答案:對。
5)可以通過Visio來實現模具的繪制,修改,調整其內部相應的控制內容,但模具顯示的圖標不可修改。 答案:錯,圖標也一樣可以修改。
6)Visio Drawing Control控件是一個COM控件,該控件除了提供界面顯示Visio文檔外,也提供了Visio二次開發中涉及到的Window、Document、Shape、Page、Selection等對象的事件處理。 答案:對。
7)Visio文檔裡面保存到Shape Data屬性數據的時候,數值型、字符型的值保存均要再前後加雙引號。 答案:錯,數值型是不需要加雙引號的。
8)Visio二次開發,可以通過代碼實現形狀數據窗口、模具文件窗口、掃視和縮放等窗口的可見性進行控制,但不能通過代碼調用Visio控件裡面的界面組件對象(如CommandBar等UI組件對象)。 答案:錯,均可以。
9)Visio除了可以在Winform中通過控件實現對文檔的編輯外,也可以通過安裝Visio Viewer工具,實現Visio文檔基於Web方式的修改編輯。 答案:錯,Web方式只能查看,無法實現修改。
10) Visio Drawing Control控件,有一個重要的SRC屬性是用來打開或者關閉當前文檔,如果開始為該屬性指定特定的文件路徑後,再次設置SRC為空,那麼控件顯示的文檔就會變為空白文檔。 答案:錯,SRC只是關閉對引用文件的操作,不會影響文檔的顯示,還是顯示原來的文檔。
11)模具文件屬性的修改,必須先以讀寫方式打開模具文檔,才能進行相關的操作。 答案:對。
12)Visio文檔通過SRC打開指定文件後,如果要重新關聯到不同的文件上去,需要通過Marshal.ReleaseComObject方法來釋放已有的對象,如果是新建一個Visio文檔,則不需要這樣操作。 答案:錯,均需要釋放對象。
13)Visio開發的Winform程序,可以使用兩種方式實現右鍵菜單:一種是通過捕捉Visio控件的MouseUpEvent事件,一種是通過RUNADDONWARGS函數來實現。兩種方式效果一樣,都帶有Visio常用的復制、粘貼、格式、數據等基本的菜單項目。 答案:錯,第一種沒有其他菜單。
14)屬性數據的下拉列表分為:固定列表、可變列表。兩者區別前者不可以通過代碼增加列表項目,後者可以增加;但兩者都可以既從列表中選擇數據,也可以輸入新的內容。 答案:錯誤,他們都可以通過代碼增加列表項目,只是後者可以選擇已有的,也可以輸入其他內容。
15)Visio文檔提供打印當前頁、當前視圖、分頁打印等操作,同時也支持打印選定區域。 答案:對。
16)如果修改了模具的Master對象的形狀數據定義,如增加一個屬性字段,那麼圖紙對應的Master和Shape也能自動實現更新。 答案:錯,更新模具形狀屬性後,需要手動更新圖紙的信息。
17)通過代碼操作,除了可以修改Shape對象的值外,還可以實現Shape對象的文本內容、字體大小、線條粗細、顯示顏色等屬性的修改。 對。
18)Visio文檔有且只有一個模具模板(Master對象),一個模具對象在文檔中可有多個圖元(Shape對象)。 答案:對。
19)一個形狀文件包含一系列的模具組合,如開關模具組、跨越模具組。 答案:對。
20)Visio文檔可以保存為XML格式文件,通過這個文件可以看到各種Visio對象之間的組織關系。 答案:對。
二)實戰開發題(每題50分,共1題,總分50分)
例子要求:
1、打開指定的Visio及模具文件,可以保存Visio文件,導出Visio為CAD。
2、選擇打開不同的Visio文件,實現對象釋放及重新加載。 3、模仿EnventSink.cs代碼實現事件的偵聽及處理操作。 4、為頁面添加一個右鍵菜單【測試】,單擊測試彈出對話框顯示頁面數量、當前頁面名稱、Shape數量。5、可以打開、隱藏模具文件窗口。
答案:
打開相關的Visio文件,並在圖紙上右鍵,顯示右鍵菜單【測試】
響應菜單操作後,界面彈出對話框,提示相關的信息,如下圖。
例子關鍵的代碼如下所示:
private void btnOpen_Click(object sender, EventArgs e)
下面提供本次例子的源碼,希望對大家學習研究有所幫助:Visio二次開發實戰例子Demo(源碼)
主要研究技術:代碼生成工具、Visio二次開發、送水管理軟件等共享軟件開發
轉載請注明出處:
撰寫人:伍華聰 http://www.iqidi.com