我需要获得放置多行Textbox
的插入符号的点的确切坐标。
假设我在Textbox
中写了一个新角色,那么坐标应该改变。
P.S。我希望这些坐标位于Textbox
的KeyUp事件上,而不是Mouse
事件上。
感谢。
答案 0 :(得分:1)
TextBox
提供了一种在文本中的任何位置获取字符边界的方法。如果您传入CaretIndex
,则矩形的左侧对应于插入符号的左边缘。
var rect = textBox.GetRectFromCharacterIndex(textBox.CaretIndex);
然后,您可以使用rect.TopLeft
或rect.BottomLeft
来获取插入符号上端或下端的坐标。请注意,您需要进行一些健全性检查。正确的实现看起来像这样:
private Point? GetCaretPosition()
{
var rect = textBox.GetRectFromCharacterIndex(textBox.CaretIndex);
var location = rect.TopLeft /* or BottomLeft */;
if (double.IsInfinity(location.X) || double.IsInfinity(location.Y))
return null;
return location;
}
答案 1 :(得分:0)
在文本框/区域添加KeyUp事件:
private void TextBox_KeyUp(object sender, KeyEventArgs e)
{
Point myMouse = Mouse.GetPosition(this);
//do something with the mouse position
}
然后管理事件处理程序上的鼠标位置:
{{1}}
希望这有帮助