C# office控件开发 如何使word中书签不被删除,且一直保持[]输入状态,非|状态

方案思路:

需要office限制编辑的支持,利用限制编辑控制书签的禁止删除

利用书签的Start和End属性控制书签一直保持[]输入状态,非|状态

解决方案:

实现该方案的初始条件

假设word此时是限制编辑状态,在限制编辑word的时候,对要使用的书签设置例外,即没有对书签进行限制编辑

第一步:word启动时候,需要利用书签的Start和End属性控制书签的起始字符位置和结束字符位置,将书签起始和结束字符位置,嵌入word的限制编辑域,贴出代码如下:

  private void ThisDocument_Startup(object sender, System.EventArgs e)
        {

                         ptcOhter1.Start = ptcOhter1.Start-1;
                         ptcOhter1.End = ptcOhter1.End+1;

        }

第二步:当书签获得焦点时,将结束字符位置向后移动一位,这样就可以保持书签一直保持[]输入状态,非|状态,贴出代码如下:

        //书签获取焦点时候设置书签其实位置
        private void ptcOhter1_Selected(object sender, SelectionEventArgs e)
        {
            Microsoft.Office.Tools.Word.Bookmark bookmark = (Microsoft.Office.Tools.Word.Bookmark)sender;
            //bookmark.Start = bookmark.Start - UtilTools.START_RANGE; ;
            bookmark.End = bookmark.End + UtilTools.END_VALUE;
        }

第三步:书签失去焦点时将书签的end位置复原(如果不恢复位置,多次触发获得焦点事件,就会使结束字符位置不停地累加,变形)

        private void ptcOhter1_Deselected(object sender, SelectionEventArgs e)
        {
            Microsoft.Office.Tools.Word.Bookmark bookmark = (Microsoft.Office.Tools.Word.Bookmark)sender;
            bookmark.End = bookmark.End - UtilTools.END_VALUE;
            //bookmark.Start = bookmark.Start + UtilTools.START_RANGE;
        }

第四步:word关闭前的处理,返回书签的起始字符位置和结束字符位置

        private void ApplicationDocument_BeforeClose(object sender, System.ComponentModel.CancelEventArgs e)
        {
            解除限制编辑
            //UtilTools.applicationDocument = this;
            //Word.Application newapp = this.Application;
            //UtilTools.UnProtectDoc(ref newapp);

            //改变书签结束位置
            endBookMark();
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值