问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c# 如何打开和关闭Visio文件

发布网友 发布时间:2022-05-01 22:06

我来回答

1个回答

热心网友 时间:2022-06-24 03:44

Visio Drawing Control控件使用
Visio开发必备
Visio SDK 2007
VisSDK.chm
Visio Code Samples Library.chm
Visio文档操作
查看ShapeSheet属性及帮助内容
宏的录制

Visio的几个重要对象

Application
Window (Application.ActiveWindow)
Document (Application.ActiveDocument)
Master、Shape

Visio XML格式文件分析
Master格式

Pages/Shapes格式

图纸的XML文档中,Master后面的Shapes集合中只有一个Shape对象
图纸的Shapes集合有多个对象,每个对象的NameU和Name值可能不一样,一般使用NameU

Visio基本操作的实现

VisApplication = this.ctrlDrawing.Document.Application;
VisWindow = VisApplication.ActiveWindow;
VisDocument = VisApplication.ActiveDocument;

//Settings
VisApplication.Settings.ShowShapeSearchPane = false; //显示搜索形状窗体
VisApplication.Settings.EnableAutoConnect = false; //自动链接(2007默认)
VisApplication.Settings.StencilBackgroundColor = 10070188; //vbGrayText

//文档各种显示
VisApplication.DoCmd((short)VisUICmds.visCmdViewRulers);
VisApplication.DoCmd((short)VisUICmds.visCmdViewGrid);
VisApplication.DoCmd((short)VisUICmds.ShowGuides);
VisApplication.DoCmd((short)VisUICmds.ShowConnectPoints);
VisApplication.DoCmd((short)VisUICmds.ShowPageBreaks);

//各种窗口
VisApplication.DoCmd((short)VisUICmds.visCmdShapesWindow);
VisApplication.DoCmd((short)VisUICmds.visCmdPanZoom);
VisApplication.DoCmd((short)VisUICmds.visCmdCustProp);
VisApplication.DoCmd((short)VisUICmds.visCmdSizePos);

SendKeys.Send("^(x)");
//VisApplication.DoCmd((short)VisUICmds.visCmdUFEditCut);
SendKeys.Send("{DELETE}");
//VisApplication.DoCmd((short)VisUICmds.visCmdUFEditClear);
SendKeys.Send("^+(p)");
//VisApplication.DoCmd(VisUICmds.visCmdFormatPainter);
SendKeys.Send("^(z)");
//VisApplication.DoCmd(VisUICmds.visCmdEditUndo);
调用工具条对象、菜单对象的方法
Application.CommandBars
Microsoft.Office.Core.CommandBars共享Office对象模型
使用CommandBar代替UIObject
CommandBar对象中,菜单及工具条是同一个东西
CommandBar、CommandBarButton、 CommandBarComboBox、CommandBarControl、 和 CommandBarPopup

示例:执行视图中的工具条的所有按钮事件。
Microsoft.Office.Core.CommandBars commandBars;
commandBars = (Microsoft.Office.Core.CommandBars)VisApplication.CommandBars;

foreach (Microsoft.Office.Core.CommandBarControl control in commandBars["View"].Controls)
{
Microsoft.Office.Core.CommandBarButton button = control as Microsoft.Office.Core.CommandBarButton;
if (button != null)
{
button.Execute();
}
}

StringBuilder sb = new StringBuilder();
foreach (Microsoft.Office.Core.CommandBar bar in commandBars)
{
sb.Append(string.Format("CommandBar Name:{0}\r\n", bar.Name));
foreach(Microsoft.Office.Core.CommandBarControl control in bar.Controls)
{
Microsoft.Office.Core.CommandBarButton button = control as Microsoft.Office.Core.CommandBarButton;
if(button != null)
{
sb.Append(string.Format("Button Name:{0} \r\n", button.Caption));
}
}
}
Form2 frm = new Form2();
frm.txtContent.Text = sb.ToString();
frm.Show();

short flags = (short)VisOpenSaveArgs.visOpenDocked | (short)VisOpenSaveArgs.visOpenRO;
StencilOpenEx(wndVisio.Application, flags);

/**//// <summary>
/// 打开模具的公共方法
/// </summary>
/// <param name="visApp">按引用调用的VisioApplication对象</param>
/// <param name="flags">打开的模式</param>
private void StencilOpenEx(Application visApp, short flags)
{
List<string>stencilList = GetStencils();
string stencilFileName;

foreach(string stencil in stencilList)
{
stencilFileName = GetStencilsFileName(stencil);
if(!string.IsNullOrEmpty(stencilFileName))
{
visApp.Documents.OpenEx(Portal.gc.gStencileFileBasePath + stencilFileName, flags);
}
}
}

//关闭模具文件
visApp.Documents["Switch.vss"].Close();
visApp.Documents["Span.vss"].Close();
visApp.Documents["Line.vss"].Close();
visApp.Documents["Label.vss"].Close();
visApp.Documents["Construct.vss"].Close();
visApp.Documents["Monitor.vss"].Close();

Visio Shape的属性操作
StringToFormulaForString、FormulaStringToString函数
访问属性
设置属性
添加属性

//列出模具组
this.cmbStencilGroup.Items.Clear();
List<string>stencilGroups = stencil.GetStencils();
foreach (string group in stencilGroups)
{
this.cmbStencilGroup.Items.Add(group);
}

//根据模具组列出模具
string stencilName = stencil.GetStencilsFileName(this.cmbStencilGroup.Text);
this.cmbStencil.Items.Clear();
string tempName;
foreach (Master master in visApp.Documents[stencilName].Masters)
{
tempName = master.Name;
if (!stencil.IsExcludeItem(tempName))
{
this.cmbStencil.Items.Add(tempName);
}
}

//根据模具,获取对应的属性集合,遍历属性集合,列出属性名称
string stencilName = stencil.GetStencilsFileName(this.cmbStencilGroup.Text);
string masterName = this.cmbStencil.Text;
Visio.Shape shape = visApp.Documents[stencilName].Masters[masterName].Shapes[1];
if (shape != null)
{
List<StencilPropertyInfo>propInfos = property.GetPropertyCollection(shape);
foreach (StencilPropertyInfo info in propInfos)
{
this.cmbProperty.Items.Add(info.Name);
}
}

//根据模具、模具属性,列出对应的属性信息
string stencilName = stencil.GetStencilsFileName(this.cmbStencilGroup.Text);
string masterName = this.cmbStencil.Text;
Visio.Shape shape = visApp.Documents[stencilName].Masters[masterName].Shapes[1];
StencilPropertyInfo info = property.GetProperty(shape, this.cmbProperty.Text);
if (info != null)
{
this.txtName.Text = info.Name; //属性名称
this.txtValue.Text = info.Value; //属性值
this.txtFormat.Text = info.Format; //属性格式
this.txtSortKey.Text = info.Sort; //属性的排序
this.txtPrompt.Text = info.Prompt; //属性的提示信息
}

//根据模具,获取属性对象集合
public List<StencilPropertyInfo> GetPropertyCollection(Visio.Shape shape)
{
List<StencilPropertyInfo> list = new List<StencilPropertyInfo>();
StencilPropertyInfo propertyInfo;
Visio.Cell shapeCell;
short shortSectionProp = (short)VisSectionIndices.visSectionProp;

if (shape != null)
{
for (short i = 0; i < shape.get_RowCount(shortSectionProp) - 1; i++ )
{
if (shape.get_CellsSRCExists(shortSectionProp, i, (short)VisCellIndices.visCustPropsLabel, 0) != 0)
{
propertyInfo = new StencilPropertyInfo();

shapeCell = shape.get_CellsSRC(shortSectionProp, i, (short)VisCellIndices.visCustPropsLabel);
propertyInfo.Name = VisioUtility.FormulaStringToString(shapeCell.RowNameU);

shapeCell = shape.get_CellsSRC(shortSectionProp, i, (short)VisCellIndices.visCustPropsPrompt);
propertyInfo.Prompt = VisioUtility.FormulaStringToString(shapeCell.FormulaU);

shapeCell = shape.get_CellsSRC(shortSectionProp, i, (short)VisCellIndices.visCustPropsFormat);
propertyInfo.Format = VisioUtility.FormulaStringToString(shapeCell.FormulaU);

shapeCell = shape.get_CellsSRC(shortSectionProp, i, (short)VisCellIndices.visCustPropsValue);
propertyInfo.Value = VisioUtility.FormulaStringToString(shapeCell.FormulaU);

shapeCell = shape.get_CellsSRC(shortSectionProp, i, (short)VisCellIndices.visCustPropsSortKey);
propertyInfo.Sort = VisioUtility.FormulaStringToString(shapeCell.FormulaU);

//shapeCell = shape.get_CellsSRC(shortSectionProp, i, (short)VisCellIndices.visCustPropsType);
//propertyInfo.PropType = VisioUtility.FormulaStringToString(shapeCell.FormulaU);

//shapeCell = shape.get_CellsSRC(shortSectionProp, i, (short)VisCellIndices.visCustPropsInvis);
//propertyInfo.InVisible = VisioUtility.FormulaStringToString(shapeCell.FormulaU);
//..
list.Add(propertyInfo);
}
}
}

return list;
}

//根据模具和属性名称,获取属性对象信息
public StencilPropertyInfo GetProperty(Visio.Shape shape, string propertyName)
{
List<StencilPropertyInfo> list = GetPropertyCollection(shape);
StencilPropertyInfo propertyInfo = null;
foreach(StencilPropertyInfo tempInfo in list)
{
if (tempInfo.Name == propertyName)
{
propertyInfo = tempInfo;
break;
}
}

return propertyInfo;
}
=====
我也没有写过visio操作,这个是收藏的代码,没有帮到你hoho,你可以去CSDN里面发帖求助一下
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果手机微信怎么换漂亮字体(苹果手机微信怎么换行输入) 有什么好用的app转换字体 手写转文字的软件 erp可以看评论地址吗 淘宝评论url是什么意思? 揭秘:码牌支付风控升级,背后真相揭秘 电脑电视直播软件哪个好用什么软件好电脑看电视直播 潼南子同街学区是哪些 三极管BU406价格和参数? 火锅料放在冰柜忘了插电一个星期给会坏了吗 火锅的设备有哪些 Visio 2013 数据库模型图 关系箭头主外键区分 如何使用C#进行Visio二次开发 怎样正确的运用微博推广 sql从一个表查询数据,插入到另一个表中 请专业人士来回答,最好是教师,怎么打淘气孩子,应该打哪里?最好让... 小孩不听话打哪里好 2012后未来10年大学各专业就业率前10名及解析? 求大学生就业难一些现状数据 大学生就业最热门的专业有哪些 近几年大学生就业的情况调查 谁有08-12年的具体点的数据啊? 老公前段时间出轨和别的女人在一起,那次他和别的女人在一起的时候,我经常跟他吵,有一次老公跟我我说? 男的出轨还和别人暧昧。他女朋友会不会原谅他了? 老公前段时间出轨和别的女人在一起过,后来那女的走了,她们就没再联系了,我因为这件事跟他吵了架? 老公前段时间出轨和别的女人在一起过,后来那女的走了后,我经常发信息骂那女的? 大学生就业率最低9个专业? 2011年就业率高的专业及各专业排行率? 太调皮了,要挨打,打哪里最好? 老公前段时间出轨和别的女人在一起,后来那女的也走了,一个小三都不要的男人能要吗? 现在大学生的就业率在多少?你如何评价? 每年全国有多少大学生毕业生和专科生?就业率是多少? visio uml 类有何用途 vsd格式文件怎么样进行编辑 2022年属虎姓王起用岚怎么起名 给虎年出生的小女孩取名,我姓王,要求好听易懂 日本买ysl便宜么?找个代购日本代购的ysl女神粉底才340,要不要买 王姓女孩,农历虎年正月初十早上5点30分出生,帮帮我。取个名字, 雅诗兰黛新沁水粉底液30ml 代购需要多少钱 蓝色棉服搭配什么颜色内搭 雅诗兰黛沁水粉底液加拿大代购280为什么比香港还便宜,在香港390算贵吗... 这个粉底液的价格是多少? 宝蓝色羽绒服该搭配什么颜色的打底裤和靴子? 想买一个黄金手镯自己戴,请问买黄金首饰应该注意什么? 人会不会被吓死? 人能被吓死吗? 有没有人吓人吓死人的概率 人真的可能被吓死吗?这个过程要多久?有什么症状? 人会被吓死吗? 人会被吓死么?我刚才被吓了一跳,心跳的特别大声,我会不会被下出啥毛病 人真的会被吓死吗? 人会很容易被吓死吗?