首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C#实现基于Word保护性模板文件的修改

设置保护性,比如文档打开密码、保护性密码,是为了防止标准化文字内容、敏感信息内容不被修改,对于可修改内容则由程序进行控制。...因此实际操作中,需要用后台程序对文件进行多次处理 范例运行环境 操作系统: Windows Server 2019 DataCenter 操作系统上安装 Office Word 2016 ,客户端使用的...设计实现 进一步修改模板文件 通过设置内容控件的一些属性,用程序进行状态和内容的控制,首先修改如下图: 选中内容控件,点击开发工具选项卡中的属性,自定义标记值,并选中无法编辑内容属性。.../备份Range对象的文本内容 //遍历内容控件 foreach (Word.ContentControl cc in WordDoc.ContentControls) { //判断格式文本内容控件,并判断自定义属性...,如TAG1申请人标识,TAG2审批人标识 2、在流程节点读取对应的标识,备份内容,然后删除控件,以防止再次修改填写的内容 3、在删除控件的光标位置,恢复原录入内容,以保持文件内容的完整性,以备下一节点审批

6710

ContentControl开始入门自定义控件

在DefaultStyle上实现ContentControl的基础部分 接下来MyHeaderedContentControl的父类修改为ContentControl。...IsTabStop指示是否某个控件包含在 Tab 导航中,Tab的导航顺序是用深度优先算法搜索VisualTree上的Control,所以ContentControl优先获得了焦点。...如果ContentControl作为一个容器的话(如GroupBox)IsTabStop属性都应该设置False。...通过Setter改变默认值 通常从父控件继承而来的属性很少在构造函数中设置默认值,而是在DefaultStyle的Setter中设置默认值。...依赖属性的默认值可以在注册依赖属性时在PropertyMetadata中设置,通常属性类型的默认值,也可以在DefaultStyle的Setter中设置,不推荐在构造函数中设置

3.6K40
您找到你想要的搜索结果了吗?
是的
没有找到

了解模板化控件(2):模仿ContentControl

ContentControl和Panel是VisualTree的基础,可以说几乎所有VisualTree上的UI元素的父节点中总有一个ContentControl或Panel。...因为ContentControl很简单,如果只实现ContentControl最基本功能的话很适合用来做TemplatedControl的入门。...TemplateBinding不能使用TypeConverter,所以源属性和目标属性必须相同的数据类型。...除了可属性值继承的属性,需要适当地ControlTemplate中的元素属性绑定到所属控件的属性,例如Margin="{TemplateBinding Padding}",这样可以方便控件的使用者通过属性调整...2.4 通过Setter改变默认值 通常从父类继承而来的属性不会在构造函数中设置默认值,而是在DefaultStyle的Setter中设置默认值。

66020

C# 一个基于.NET Core3.1的开源项目帮你彻底搞懂WPF框架Prism

描述 Bootstrapper and the Shell 创建一个基本的引导程序和shell Regions 创建一个区域 Custom Region Adapter StackPanel创建自定义区域适配器...ViewModelLocator - Change Convention 更改ViewModelLocator命名约定 ViewModelLocator - Custom Registrations 特定视图手动注册...Participation 通过INavigationAware了解视图和视图模型导航参与 Navigate to existing Views 导航期间控制视图实例 Passing Parameters 参数从视图...部分项目演示和介绍 ① BootstrapperShell启动界面: 这个主要演示Prism框架搭建的用法: step1:在nuget上引用Prsim.Unity step2:修改App.xaml:设置引导程序...var bootstrapper = new Bootstrapper(); bootstrapper.Run(); } } step3:在引导程序设置启动项目

1.5K20

当Python遇到Excel后,开启你的认知虫洞

本文主要讲Python与Excel的关系以及集成方案,Office家族的其他成员,如Word、PowerPoint与Excel拥有类似的功能,Python同样可以与Word、PowerPoint等Office...该系统分别使用Delphi和Excel实现。Delphi做的管理系统,数据发送给Excel。但需要用户自己调整报表格式。我采用的方案是通过Excel的VBA实现表格的格式设置。...其中有部分功能需要访问SQL Server数据库,以及完成与Delphi实现的系统类似的功能,这部分功能使用了Delphi封装的Dll(COM组件),然后通过Excel反过来调用这些DLL。...后来我实在不想这么弄了(因为买了几张影碟,着急回家看电影,不想加班),于是想到了利用Excel或Word来完成这个报表系统。通过Delphi传输数据。...ft = Font(name="黑体") for rows in table: for cell in rows: cell.font = ft # 调整行高(所有的行的高度统一设置

3.5K31

一个玩游戏的失足青年,转行做游戏开发到教育的挣扎过程

回到故事之中,当时老家网吧还在营业,我就使用Delphi网吧开发了一个记帐的小程序(小镇上很多人是赊账来上网打游戏)。 后来网吧管理规范一点,需要用文化部指定的管理软件。...上网需要身份证,我当时做了一个外挂程序,事先在程序中录入一些身份号,双击一个身份证号,在网吧管理软件上自动弹出上机解锁的窗口,身份证自动填写上去。...到大四开始,我就没有天天去上课了,在家里自学研究Delphi开发,同时做毕业设计,记得当年在毕业答辩的时候,上面有同学在答辩,我在下面临时改Bug。...我们当时做的是一个网吧游戏管理系统,可以一台服务器的硬盘,通过网络虚拟到客户端主机上,方便网吧对游戏进行管理。...我当时用C++Builder公司开发一些小的网吧应用程序或工具,在这位牛人的帮助下,让我的编程技术、思维上都有很大的提高。 ?

86410

如何GridViewEX升级到UWP(Universal Windows Platform)平台

Demo 下载: GridViewLiveTiles.zip GridViewEx.zip  GridViewDemo.zip 开发UWP应用程序 开发UWP应用程序最好是从创建empty项目开始,重用已开发的一些模块..., HorizontalAlignment.Stretch); 12: element.SetValue(ContentControl.VerticalContentAlignmentProperty...显然UWP 中的GridView 所有非空项的该属性都设置None。因此,如果不重写OnDragOver 方法,Drop 事件就不会被触发。...更加适应手持设备 在GridViewEx控件中添加新的PreparingContainerForItem 事件,该事件的参数即包含数据对象,也包含UI 容器,因此可根据需求设置UI属性,代码如下:...UWP平台开发工具 ComponentOne Studio for UWP,是一套可以编写所有 UWP 平台应用的控件集,包括表格、报表、图表、仪表盘、组织图、地图、PDF、Excel、Word、日程安排

2.7K80

C# WPF MVVM开发框架Caliburn.Micro 关于Conventions⑧

获得名称后,我们搜索具有该名称的类型。我们通过AssemblySource.Instance搜索您向CM公开的任何程序集。...此方法视图的Action.Target设置ViewModel,并相应地DataContext设置相同的值。...因为我们没有事件声明为消息的一部分,所以解析器会查找消息所附加到的元素类型的默认触发器。例如,如果消息被附加到一个按钮,那么我们将得到一个EventTrigger,其事件设置Click。...如果这些都没有设置,那么框架就会知道,由于您没有为项目指定呈现器,它应该按常规添加一个。7因此,我们ItemTemplate设置默认DataTemplate。...反过来设置自己的约定,可能会调用更多组合),然后获取视图并将其注入ContentControl

2.7K20

做个调皮的BusyIndicator

做过WPF开发的程序员对BusyIndicator应该不陌生,Extended WPF Toolkit 提供了BusyIndicator的开源实现,Silverlight Toolkit也有一个,这次想要把这个控件移植到...通常它派生自ContentControl并提供public bool IsBusy{ get; set; }属性,当设置IsBusy=True时Content.IsEnabled设置成False,并显示...IsTabStop 已经不厌其烦地提醒过复合类型控件要将IsTabStop设置False,以便在使用键盘导航时其内容可以直接获得焦点。...时几乎每次都要设置HorizontalContentAlignment和VerticalContentAlignmentStretch,SilverlightToolkit中BusyIndicator...像这种从父类继承而来的属性通常不会在构造函数中设置默认值,而是在DefaultStyle的Setter中设置默认值。 2.4 运行效果 就这样一个BusyIndicator就移植成功了。

85650

学习WPF——WPF布局——初识布局容器

--Grid.Row或 Grid.Column的默认值0--> image.png Canvas画布布局 Canvas画布布局容器允许使用精确的坐标来摆放画布内的元素 如果两个元素共用了同一块区域,那么后设置的元素覆盖先设置的元素...--你不能在这里放置多个同级元素--> ContentControl就是我们常说的内容控件,这种控件与容器控件(Grid或StackPanel)不同, 内容控件的顶级子元素只能有一个...,容器控件可以包含多个顶级子元素 如果我们想要在一个ContentControl内展示多个子控件, 我们可以先放置一个容器控件作为内容控件的顶级子元素,然后再在此容器控件中放置更多的控件 修改记录 14-12-26:完成了一部分内容(未发布) 14-12-27:完成了所有内容,删除了一部分与此文无关的内容(未发布) 14-12-28:使用自己做的客户端程序

1.5K70

2

在本次讲座中,我们以Delphi5开发工具,标准的paradox表后台数据库,来向大家介绍如何进行最简单的数据库编程。...本例所使用的计算机软硬件环境:Windows NT 4.0 Server,Borland Delphi 5,PIII550,256M内存。...我们Tdatabase的DataBaseName属性设置成Mydb(这个名字可以随便起),drivernameSTANDARD(表明驱动的是paradox表),params属性path=D:\Program...然后Table的Databasename属性设为Mydb(即Database1的DataBaseName属性),tablenameryb.db(即数据表的名字)Active属性设置True(打开表单...>这样控件的属性就设置完毕了,注意到dbgrid里面的“编号”、“姓名”等栏都是数据表中的属性,在ryb.db里面定义,而不是在前端的delphi程序里面定义。

53620
领券