C#进行Visio二次开发之知识点考核试题
本人做过多年的Visio二次开发,根据个人的经验总结及项目积累,写了一些小小的随笔文章(具体可参考《伍华聪的Visio二次开发文章》,上月有幸给深圳一个团队做了两天的Visio培训,当了一回客座老师,重新拉起Visio二次开发这面大旗,个人觉得这也是一次比较难忘的一次经历。
本次准备的培训,除了全面介绍Visio的相关知识和概念,还以实战开发的方式加深Visio二次开发的知识掌握,另外还通过试题来考核各个学生的掌握情况,本文主要是介绍我根据自己一直以来的Visio开发经验所得,准备的Visio二次开发试题,并提供相应的解答分析,希望大家批评指正,一起沟通交流。
虽然Visio已经在各行各业应用的很广,不过这两年来关注的博客文章,Visio二次开发方面的文章除了我零星写的一些,其他同行基本上没有文章涉及(可能是没有时间写这方面经验),虽然目前已经很少从项目上去升华、研究Visio二次开发方面的工作(除非又有一些特殊的项目合作需要)。因此,如果这方面我自己有一些新的心得或者资料,我是很乐意和大家一起分享。
例子要求:
1、打开指定的Visio及模具文件,可以保存Visio文件,导出Visio为CAD。
5、可以打开、隐藏模具文件窗口。
答案:
打开相关的Visio文件,并在图纸上右键,显示右键菜单【测试】
响应菜单操作后,界面弹出对话框,提示相关的信息,如下图。
例子关键的代码如下所示:
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "Visio文件(*.vsd)|*.vsd|所有文件(*.*)|*.*";
dlg.FilterIndex = 1;
if (dlg.ShowDialog() == DialogResult.OK)
{
OpenVisio(dlg.FileName);
}
}
private void OpenVisio(string fileName)
{
VisioUtility.CloseAllStencileDocument(VisApplication);
Marshal.ReleaseComObject(VisApplication);
Marshal.ReleaseComObject(VisDocument.EventList);
Marshal.ReleaseComObject(VisDocument);
Marshal.ReleaseComObject(VisWindow);
GC.Collect();
Thread.Sleep(100);
this.axDrawingControl1.Src = fileName;
this.axDrawingControl1.Src = "";
InitEventSink(VisApplication, VisDocument);
this.axDrawingControl1.Document.Saved = true;
List<string> filePaths = GetFilePaths(gStencileFileBasePath);
foreach (string stencil in filePaths)
{
VisioUtility.OpenStencilRead(VisApplication.Documents, stencil);
}
AddContextMenu();
}
private void AddContextMenu()
{
Visio.Page page = VisioUtility.GetPage(VisDocument, "馈线图");
bool isEnable = true;
if (page != null)
{
//清除所有相关的菜单事件
page.PageSheet.DeleteSection((short)VisSectionIndices.visSectionAction);
//加入新的菜单
VisioUtility.AddRightMouseAction(page.PageSheet,
"\"测试\"",
"RUNADDONWARGS(\"QUEUEMARKEREVENT\", \"/Drawing=测试\")",
isEnable, true, false, false, true, true);
}
}
下面提供本次例子的源码,希望对大家学习研究有所帮助:Visio二次开发实战例子Demo(源码)
转载请注明出处:撰写人:伍华聪 http://www.iqidi.com