【问题标题】:How can I get the insertion position of a TextBox when there is a selection?有选择时如何获取 TextBox 的插入位置?
【发布时间】:2011-11-14 21:32:15
【问题描述】:

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

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

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

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

【问题讨论】:

  • 在插入时,当前选定的文本将替换为您插入的任何内容。所以插入点是SelectionStart。
  • 好吧,不管它叫插入符号、光标还是别的什么,我说的是我上面图片中的灰色东西。
  • 原生的EDIT控件没有办法让你发现。如果你不解释为什么这很重要,没有人能帮助你。

标签: c# .net winforms


【解决方案1】:

可能有一种方法可以欺骗,但没有自然的方法可以做到这一点。

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

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

在这一行之后调用

int caretPosition =  textBox1.SelectionStart;

实际上将为您检索Caret 位置。

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

希望这会有所帮助。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2019-01-30
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多