如何使用GetCaretPos?或任何其他方法在文本框上获取CaretPosition?

时间:2011-07-15 06:38:21

标签: c# caret getcaretpos

我正在尝试在c#上创建一个新的应用程序,作为其中的一部分,我想知道富文本控件框上的插入位置[控件中的确切点]。

我将解释它,ASSUME:我有一个win form,富文本控制框和一个contextmenustrip。

当我在文本框中键入特定的charector或字符串时,我想弹出这个contextmenu项。

为此我想知道该文本框上的插入符号的确切位置。

由于谷歌搜索+ sof文章我找到了通过GetCaretPos,

的方法

但我无法使用它。

我使用richtextbox get函数做了一些事情,其中​​一个是跟随。

Point k= richTextBox1.GetPositionFromCharIndex((richTextBox1.Lines[richTextBox1.GetLineFromCharIndex(richTextBox1.GetFirstCharIndexOfCurrentLine())].Count() + 1));

我不知道这是确切的要点,但有时候我得到了正确的值。

我如何解决问题?

我购买了一些SOF帖子,但我不能解决我的问题,所以为什么再说一些细节,请不要把它作为转贴。

谢谢。

1 个答案:

答案 0 :(得分:1)

这是查看上下文菜单出现位置的快速方法。 (确保您订阅了活动。; - )

  private void richTextBox1_SelectionChanged(object sender, EventArgs e)
  {
     Point point = richTextBox1.GetPositionFromCharIndex(richTextBox1.SelectionStart);
     Text = point.ToString ();// Write to window title for fun
     new ContextMenu(new MenuItem[] {new MenuItem("test")}).Show (richTextBox1, point);
  }