前几天发现了这个问题,当使用selectionstart这个属性去获取选择区域的位置时,若是文本内容全是英文时,是没有问题的,但当内容出现中文时,selectionstart就定位不准了。
最后,我的解决方案中用了另外一个属性节点:GetCharIndexFromPosition(从指定点获取字符索引)。
具体实现方法如下:
1、创建RichTextBox的属性节点——Cusor;
2、创建Cosor的属性节点——Position(获取鼠标点击位置在屏幕坐标系中的坐标)0;
3、创建RichTextbox的调用节点——PointToClient(将屏幕坐标转换为Richtextbox工作区的坐标,相当于以控件的左上角为坐标原点),将Position连接至PointToClient输入端;
4、创建RichTextbox的调用节点——GetCharIndexFromPosition,将PointToClient连接至GetCharIndexFromPosition的输入端,这时候就可以得到鼠标点击位置的字符偏移量了。
注意:这里得到的字符偏移量与字节偏移量不同。在labview中偏移量都是按字节算的,而在.net的richtextbox中,偏移量按字符数量计算。比如这样一段字符串:“明天123”,在labview中的字节长度是7(一个汉字占两个字节,一个数字占一个),而在.net的这个控件中,它的字符长度是5。
说明:此方法同样可用于获取鼠标点击位置的字符偏移量,或用于获取光标在所有文本中所处于的位置。