C#举行Visio二回开发之界面设计及架构划设想计

写C#开始展览Visio一次开发的千千万万作品有那多少个篇了,都以写一些经验计算和技术知识的分享,本文继续来商讨那上边支出的有的体会,首要介绍下WinForm界面包车型地铁宏图和Visio软件的架构划设想计。
先看看本人花了N个月的业余时间实现的软件概貌,然后我们一同座谈下相关的技巧知识。
图片 1

软件界面首要有菜单区、工具条区、图纸内容区、右侧的管理区、状态条区等等,首要注意的是选用了ToolStripPanel来开始展览布局,然后并接纳了闻名遐迩的WeifenLuo.WinFormsUI.Docking.dll控件对图纸内容区、右侧的管理区举行支配。
其它正是细心的改动了:如为按钮、菜单添加图片,调全体制等。

Visio的SDK提供了许多主导的操作功效,如上面所示的那个效能,首要都以通过调用其里面函数实现的。
图片 2 
图片 3

其间文件中的另存为和导出AutoCad的操作是由此上边代码完结的。

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

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

在这之中的视图中有无数Visio的视图窗口供给控制,如形状窗口、自定义属性窗口、扫视缩放窗口、大小地点窗口、别的还有如标尺、网格等浮现设置须要控制。这几个都是通过调用Application.DoCmd((short)commandID);函数完结的,只要传入了对应的通令ID,那么就达到了决定呈现的功能。如自定义属性窗口为VisUICmds.visCmdCustProp,形状窗口为VisUICmds.visCmdShapesWindow,标尺为VisUICmds.visCmdViewRulers,网格为VisUICmds.visCmdViewGrid,那个属性都是能够在SDK中查找到的。

缩放图纸操作,请参考笔者的一篇小说:C#开始展览Visio三遍开发之图纸缩放操作的兑现 里面有实际的落到实处进程。

图片 45图片 46
以上的格式和形象菜单项中的操作也是通过Application.DoCmd((short)commandID);函数达成的,只要查询到对应的命令ID即可开始展览调用,你花点时间探访VisUICmds枚举下都有那三个命令ID能够调用就足以了。
如上图片中有关右键菜单的操作,请参考笔者前边写的一篇文章C#进行Visio1回开发之自定义右键菜单 

再来说说软件的架构划设想计吧。
成套UI层首要选择了前头介绍过的WeifenLuo.WinFormsUI.Docking.dll的控件(即图中的DockingControl组件),还有正是Visio
Drawing Control的OCX控件了(图中的VisioOCX组件)。
两边是各种层中用到的通用类(Commons)和实体类(Entity)。
图片 47

Visio的2次开发,除了须要操作Visio的文本(包罗八个模具文件,Viso文书档案)还有就是也亟需和数据库打交道(没有数据库的程序会逊色很多的)。
为了较好界别和协调他们的走访,小编设定了2个访问边界:访问数据库的层不会访问Visio文件对象,访问Visio文件对象的不会去拜访数据库,它们统一由业务层(Business)调配,各层之间分享Entity层的消息即可。
数据库的平底访问通过选拔Enterprise
Library的模块形成,因而DAL层只需求做较少的做事即可成功对数据库的拜访了。

相关文章