如何将键盘光标位置设置为文本框中的Point

时间:2014-01-30 08:33:51

标签: c# wpf

我想在文本框或RichtextBox中获取键盘光标位置。在WinFrom上我通过使用此代码

来完成此操作
Point p = rtb.GetPositionFromCharIndex(rtb.SelectionStart);

p.Y += (int)rtb.Font.GetHeight()*2;               
lstboxIntelli.Location = p;
lstboxbIntelli.Show();
ActiveControl = lstboxIntelli;

但是在WPF中,我无法获得GetPositionFromCharIndex属性,还有其他方法可以实现这个

我想将一个Listbox放在键盘光标(如Intellisense)

的正下方

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

WPF TextBox中,您可以通过多种方式获得插入位置:

  1. 访问TextBox.SelectionStartTextBox.SelectionLength属性。
  2. TextBox.CaretIndex财产。
  3. 不幸的是GetPositionFromCharIndex中没有TextBox因此您必须使用GetRectFromCharacterIndex做一个小技巧来获取智能感知的起点:

    var rect = rtb.GetRectFromCharacterIndex(rtb.CaretIndex);
    var point = rect.BottomRight;
    

    注意:我们正在使用BottomRight将intellisense置于适当的位置。