2012-12-29 28 views
1

我需要創建Visio文檔並從.vss文件添加形狀。我能夠添加簡單的形狀,並添加文本沒有任何問題。但是當我試圖添加一個形狀時,我遇到了一些問題,這些形狀是4個矩形組合在一起的集合(我相信它被稱爲主),併爲每個形狀添加文本。使用C#獲取Visio主組文件中的單個元素

我想在組中的每個矩形形狀中填充值(添加文本)。一旦我將這個主人放入Visio頁面,它就會以組的形式出現。我可以用Ungroup()方法取消組合每個矩形。但我不知道如何從這個組中獲得每個單獨的元素。有沒有一種方法可以唯一標識該組中的每個元素?或者遍歷整個組並查找每個元素?請看下面的代碼,到目前爲止我做了什麼。

Visio.Document doc = application.Documents.Add(@"\example.vst"); 
Visio.Page page = application.Documents[1].Pages[1]; 
Visio.Documents vdocs = application.Documents; 
Visio.Document visioStencil = vdocs.OpenEx(@"\sample.vss", (short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenDocked); 
Visio.Page visioPage = application.ActivePage; 
Visio.Shapes visShapes = visioPage.Shapes; 
//the following shape in the setensil is the group of 4 rectanle I was referring 
Visio.Master visioConvMaster = visioStencil.Masters.get_ItemU(@"Conveyance"); 
Visio.Shape visioConvShape = visioPage.Drop(visioConvMaster, 4.25, 5.5); 
//try to ungroup to get each 
visioConvShape.Ungroup(); 

任何想法我應該如何進一步進行?我對微軟技術非常陌生。我正在使用Visual Studio 2012專業版& Visio 2010 Premium。

在此先感謝。

回答

1

Visio.Shape對象具有「形狀」屬性,該屬性是子形狀的集合。不要解組;首先,遍歷Shapes集合(visioConvShape.Shapes [0],visioConvShape.Shapes [1]等),然後如果您需要取消組合,那麼在您至少執行了所需的任何操作或標識後和/或給他們可重複使用的名字。