您的位置:首页 > 编程语言 > C#

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

2013-04-19 18:45 369 查看
方案思路:

需要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();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: