WPF:如何在TextBox中获取最后一个字符的X Y位置?

时间:2015-08-03 08:51:34

标签: wpf

我希望在TextBox中拥有最后一个字符的x,y位置。我找到了 GetCharacterIndexFromPoint 方法,这正是一种反向方法。 => here

但是,我找不到合适的方法来获取TextBox中最后一个字符的实际位置。

有谁知道我如何获得这些信息?

1 个答案:

答案 0 :(得分:0)

这个问题现在已经很老了,但是我想尝试一下。

我用于获取TextBox中最后一个字符的实际位置的解决方案:

MainWindow.xaml:

<StackPanel>
    <Label Margin="10" HorizontalAlignment="Center" Content="Enter First Text: " FontSize="20"/>
    <TextBox Name="TextBox" Margin="10" Width="200" LostFocus="TextBox_OnLostFocus"/>
    <Button Content="GetPositionFromLastCharacter" Width="200" Click="GetLastCharacterFromTextBox"/>
    <Label Margin="10" HorizontalAlignment="Center" Content="Enter second Text: " FontSize="20"/>
    <TextBox Margin="10" Width="200"/>
</StackPanel>

MainWindow.xaml.cs中的方法“ GetLastCharacterFromTextBox”

private void GetLastCharacterFromTextBox(object sender, RoutedEventArgs e)
{
    int lastCharacterPosition = TextBox.Text.LastIndexOf(TextBox.SelectedText, StringComparison.CurrentCulture);
    MessageBox.Show($"Last character from the Text is at position: {lastCharacterPosition}");
}

输出: WPF Application running

如您所见,我对文本框中的选定文本使用了“ LastIndexOf”方法。

不显示焦点而显示插入符号的建议:

在TextBox上使用“ LostFocus”属性并实现以下代码:

private void TextBox_OnLostFocus(object sender, RoutedEventArgs e)
{
    e.Handled = true;
}

结果如下: Showing caret without focus

即使我不再专注于第一个TextBox,插入符号仍然可见。