如果有选择,如何获取TextBox的插入位置?

时间:2011-09-11 19:44:55

标签: c# .net winforms

如果TextBox中没有选择,则插入位置等于SelectionStart。

但是如果一个选择,那么插入位置可能在SelectionStart(从右到左选择):

enter image description here

或者它可能在SelectionStart + SelectionLength(从左到右选择):

enter image description here

当有选择时,如何确定TextBox的插入位置?

2 个答案:

答案 0 :(得分:1)

可能有一种欺骗的方法,但没有自然的方法。

例如,如果在应用程序的特定时刻,您知道TextBox中的文本被选中(左右或左右没有区别), 你可以做到

textBox1.SelectionLength = 0; //this will clear a selection UI

此行之后通过调用

int caretPosition =  textBox1.SelectionStart;

会实际检索到Caret个位置。

顺便说一下这是一个技巧,所以最好避免使用这些解决方案(可能会有人提供其他东西),最好稍微重新排列代码。

希望这有帮助。

答案 1 :(得分:0)

这里对插入位置有很好的解释,最好调用本机API,这样就不会破坏选择和其他文本框功能(例如撤消)

http://www.microbion.co.uk/developers/C%20position%20of%20caret.pdf