程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#進行Visio二次開發之組合形狀操作(4)

C#進行Visio二次開發之組合形狀操作(4)

編輯:關於C語言

因此可以看到,可以通過該屬性的設置,來實現組合形狀的分離操作,在圖紙上實際操作一下,把0修改為1或者2,果然可以實現子形狀的選擇操作了。

建立一個操作函數,來實現選擇模式的修改,如下所示:

/// <summary>
/// 設置形狀的選擇屬性
/// </summary>
/// <param name="targetShape">指定的形狀</param>
/// <param name="selectMode">
/// 0 僅選擇組合形狀。
/// 1 首先選擇組合形狀
/// 2 首先選擇組合的組成部分 
/// </param>
[CLSCompliant(false)]
public static void SetGroupSelectMode(Visio.Shape targetShape, int selectMode)
{
targetShape.get_CellsSRC((short)VisSectionIndices.visSectionObject, (short)VisRowIndices.visRowGroup,
(short)VisCellIndices.visGroupSelectMode).FormulaU = selectMode.ToString();
}

本人實現了圖形變化效果,截取項目部分代碼,作為分析研究之用,如下所示:

else if (equipType == "4/2閥")
{
VisioUtility.SetGroupSelectMode(shape, 2);//改變模式,使之可以選擇子形狀
#region MyRegion
foreach (Shape subShape in shape.Shapes)
{
string subEquipType = VisioUtility.GetShapeCellValue(subShape, "設備類型");
if (subEquipType == "閥A" || subEquipType == "閥B")
{
subShape.Text = subEquipType;
if (intValue != 0)
{
continue;
}
try
{
VisWindow.DeselectAll();
VisWindow.Select(subShape, (short)VisSelectArgs.visSubSelect);
if (subEquipType == "閥A")
{
VisWindow.Selection.Move(0.393701, 0, "inches");//移動到右邊
}
else if (subEquipType == "閥B")
{
VisWindow.Selection.Move(-0.393701, -0, "inches");//移動到左邊
}
System.Windows.Forms.Application.DoEvents();
Thread.Sleep(50);
}
catch (Exception ex)
{
VisWindow.DeselectAll();
}
}
}
VisioUtility.SetGroupSelectMode(shape, 0);//還原選擇模式,成為組合形狀
#endregion
}

世界本簡單,只因道未知;無師可自通,碼界無秘密。

主要研究技術:代碼生成工具、Visio二次開發、送水管理軟件等共享軟件開發

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved