如何从WPF C#中的CaretIndex获取坐标?
我需要得到多行如何从WPF C#中的CaretIndex获取坐标?,c#,.net,wpf,caret,onkeyup,C#,.net,Wpf,Caret,Onkeyup,我需要得到多行文本框插入符号所在点的精确坐标 假设我正在文本框中写入一个新字符,那么坐标应该更改 另外,我希望这些坐标出现在文本框的键控事件上,而不是出现在鼠标事件上 谢谢。在文本框/区域中添加一个键控事件: <TextBox HorizontalAlignment="Left" Height="23" Margin="104,80,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120" Key
文本框插入符号所在点的精确坐标
假设我正在文本框中写入一个新字符,那么坐标应该更改
另外,我希望这些坐标出现在文本框
的键控事件上,而不是出现在鼠标
事件上
谢谢。在文本框/区域中添加一个键控事件:
<TextBox HorizontalAlignment="Left" Height="23" Margin="104,80,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120" KeyUp="TextBox_KeyUp"/>
希望这有助于文本框
提供了一种获取文本中任意位置字符边界的方法。如果传入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;
}
创建鼠标位置。没有得到那么多,你能更深入地解释一下吗。ThanksMousePosition mousePosition=new mousePosition()?无法获得类似于mousePosition的内容,朋友。我想你从未尝试过做任何事情。这会告诉你鼠标光标在哪里,但不会告诉你文本插入符号在哪里。尝试一下,会让你知道。@BhavikJadav我不确定你使用了什么技术,但是如果您没有使用GetRectFromCharacterIndex
,那么您应该会看到我的答案。那将是“正确”的方法。好极了,我刚刚用了它,它';It’行了,顺便说一句,我用了右下角的坐标。为WPF干杯。
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;
}