VSTO思考系列之动态控制文档中按钮权限
- 实现目的
能够实现,依据所选项控制word文档中,对应控件的可编辑性;例如项目信息申请,我选择储备类,基本信息中项目性质不可编辑,而选择实施类的时候重要级别不可编辑其他可以编辑,如下截图:
- 实现方式一
word形成时候,所有控件(除下拉)不可编辑,然后依据选择下拉控制界面可编辑的按钮;下拉采用comboBox1,基本信息控件使用PlainTextContentControl
核心代码:
1 Microsoft.Office.Interop.Word.Application newapp = ThisApplication; 2 UtilTools.UnProtectDoc(ref newapp); 3 object editorID = Word.WdEditorType.wdEditorEveryone; 4 this.plainTextContentControl1.Range.Editors.Add(ref editorID);
缺点:
1.不能支持重选;原因:重选
2.当用户重选的时候,需要处理已填写的控件;
3.处于可以多选但是不可使用的尴尬境界
优点:
1.jacob支持提取;
- 实现方式二
word打开的时候,以windowForm方式弹出窗体,让客户选择所要选择的类型,然后再进入word中,进行其他信息填写;
缺点:不可多选
有点:1.实现简单 2.jacob支持提取;
- 实现方式三
不使用office自带的控件,采用winform控件
优点:1.支持重选
缺点:1.java从word中提取信息有待去验证,不过可以通过xml方式变相解决该问题
- 对比表
实现方式 | 是否支持重选 | jacob是否支持 | 美观 | 实现难易 |
一(不通过) | 不 | 是 | 是 | 难 |
二 | 不 | 是 | 是 | 易 |
三 ok | 是 | 不确定 | 是 | 易 |
人在山中,才知道,白云也可以抓上一把,苍翠竟有清甜的味道。
人在山中,才知道,高度永远是一个变量,而快乐则是附于中跋涉过程的函数。
人在山中,才知道,庄严是望远时的一种心境,高处才能指点江山。