最近闲来无事搞搞代码玩,编一个Word的VSTO。代码的功能是批量的修改word里面的图片的边框,有删除边框的功能,有修改边框的功能。结果碰到了很费解,找不到答案也搞不懂的问题!
平台:VS2022,Word2019,用的C#,以前都用VB,心血来潮改用C#,之前也从来没玩过C#。
问题:1、无法删除边框,甚至应用到无边框的图片,反而会加上边框。
按微软的MSDN,应用Borders.Enable属性(读写)设置为Fasle,就可以删除边框了。对象都是InlineShape中的Picture类型的。
CurrentShape.Borders.Enable = 0;
上述代码无用,然后又按照网上可能的方法,设置外框集合的线型为无。
CurrentShape.Borders.OutsideLineStyle = WdLineStyle.wdLineStyleNone;
也没有用,后面还试过把线框集合里面的上下左右边框对象分别设置线型为无,也不行。
调试发现,原因是赋值无效,走过赋值wdLineStyleNone的语句后,值依然是wdLineStyleSingle,这些属性是读写属性的啊,为啥不能赋值?如果我设置了一个粗边框,应用删除,粗边框是会被删除,但是就改成这个单线的灰色边框了。
表现如下:
问题:2,如果将线型设置为双实线的时候,再应用1.0线宽、4.5线宽、6.0线宽的时候会出问题。
CurrentShape.Borders.OutsideLineStyle=WdLineStyle.wdLineStyleDouble;
CurrentShape.Borders.OutsideLineWidth = WdLineWidth.wdLineWidth100pt;
程序提示参数超出范围。我当时以为是太小了不适合双线,结果试了一下,0.75线宽,0.5甚至0.25都不会报错,而且看起来执行时正确。但是1.5,2.25,3.0线宽都是对的。
另外,试用了其他的线型,比如那种细粗复核的线型,设置从0.25到6.0都没问题。就费解为啥双实线就右问题。另外,从word里设置是不会出问题的。
有各位涉及到这个问题的吗?是某些设置没注意到,还是Wrod提供的库本身的问题?