C#进行Visio二次开发之界面设计及架构设计

写C#进行Visio二次开发的泛滥成灾文章产生那么些首了,都是描摹一些经验总结和技术知识的分享,本文继续来探讨这地方开之有的体会,主要介绍下WinForm界面的统筹以及Visio软件之架构设计。
预先看自家花了N个月的业余时间完成的软件概貌,然后大家共讨论下有关的技巧知识。
C# 1

软件界面主要出菜单区、工具条区、图张内容区、右边的管理区、状态条区等等,主要注意的是动了ToolStripPanel来拓展布局,然后连行使了红的WeifenLuo.WinFormsUI.Docking.dll控件对图纸内容区、右边的管理区进行支配。
另就是是精心的改动了:如为按钮、菜单上加图,调整体等。

Visio的SDK提供了无数主干的操作功能,如下面所展示之这些意义,主要还是由此调用其内部函数实现之。
C# 2 
C# 3

里文件中之另存为和导出AutoCad的操作是透过下代码完成的。

C# 4            SaveFileDialog dlg = new SaveFileDialog();
C# 5            dlg.FileName = Portal.gc.gVisioImage.VisioName;
C# 6            dlg.Filter = “Visio文件(*.vsd)|*.vsd|所有文件(*.*)|*.*”;
C# 7            dlg.FilterIndex = 1;
C# 8            if (dlg.ShowDialog() == DialogResult.OK)
C# 9C# 10            C# 11{
C# 12                if (dlg.FileName.Trim() != string.Empty)
C# 13C# 14                C# 15{
C# 16                    if (File.Exists(dlg.FileName))
C# 17C# 18                    C# 19{
C# 20                        File.Copy(Portal.gc.gVisioTemplateFilePath, dlg.FileName, true);
C# 21                    }
C# 22                    else
C# 23C# 24                    C# 25{
C# 26                        File.Copy(Portal.gc.gVisioTemplateFilePath, dlg.FileName);
C# 27                    }
C# 28                }
C# 29            }

C# 30            SaveFileDialog dlg = new SaveFileDialog();
C# 31            dlg.FileName = “”;
C# 32            dlg.Filter = “AutoCAD 绘图 (*.dwg)|*.dwg|所有文件(*.*)|*.*”;
C# 33            dlg.FilterIndex = 1;
C# 34            if (dlg.ShowDialog() == DialogResult.OK)
C# 35C# 36            C# 37{
C# 38                if (dlg.FileName.Trim() != string.Empty)
C# 39C# 40                C# 41{
C# 42                    VisApplication.ActivePage.Export(dlg.FileName);
C# 43                }
C# 44            }

里面的视图中有广大Visio的视图窗口要控制,如形状窗口、自定义属性窗口、扫视缩放窗口、大小位置窗口、其他还有如标尺、网格等展示设置需要控制。这些都是经过调用Application.DoCmd((short)commandID);函数实现的,只要传入了对应的命令ID,那么即使达到了决定显示的效益。如打定义属性窗口也VisUICmds.visCmdCustProp,形状窗口为VisUICmds.visCmdShapesWindow,标尺为VisUICmds.visCmdViewRulers,网格为VisUICmds.visCmdViewGrid,这些性都是好当SDK中查找到的。

缩放图纸操作,请参见我的一样篇稿子:C#开展Visio二次开发之祈求张缩放操作的落实 里面有具体的实现过程。

C# 45C# 46
以上之格式和形制菜单项中的操作为是透过Application.DoCmd((short)commandID);函数实现之,只要查询到相应的指令ID即可开展调用,你花点时间看望VisUICmds枚举下还来那些命令ID可以调用就好了。
上述图片被关于右键菜单的操作,请参考我面前写的一致首文章C#开展Visio二次开发之于定义右键菜单 

再度来说说软件之架构设计吧。
一体UI层主要用了前方介绍过的WeifenLuo.WinFormsUI.Docking.dll的控件(即图备受之DockingControl组件),还有就是是Visio
Drawing Control的OCX控件了(图被的VisioOCX组件)。
有限止是逐一层中因故到之通用类(Commons)和实体类(Entity)。
C# 47

Visio的二次开发,除了需要操作Visio的公文(包含多个模具文件,Viso文档)还有即使是啊急需跟数据库打交道(没有数据库的程序会小很多之)。
以较好界别和和谐他们的看,我设定了一个看边界:访问数据库的交汇不见面造访Visio文件对象,访问Visio文件对象的无会见失掉顾数据库,它们统一由业务层(Business)调配,各层之间分享Entity层的消息即可。
数据库的底色访问通过采取Enterprise
Library的模块形成,因此DAL层只待做比较少之工作即可完成对数据库的拜访了。

相关文章