1

我想知道是否有任何方法可以获取鼠标在 TextBlock 中直接指出的字符。

我通过使用以下代码找到了如何使用 TextBox 执行此操作:

 private void TextBox_MouseMove(object sender, MouseEventArgs e)
        {
            TextBox t = sender as TextBox;
            Point p = e.GetPosition(t);

            int val =  t.GetCharacterIndexFromPoint(p, true);    

            txtResult.Text = t.Text[val].ToString() ;
        }

但似乎 TextBlock 没有任何类似的方法。

有人有想法吗?

风筝

4

1 回答 1

0

GetCharacterIndexFromPoint()如果没有for等现成的功能TextBlock,我可以建议使用StyleforTextBox来模拟TextBlock.

例子:

<Style x:Key="TextBlockBehavior" TargetType="{x:Type TextBox}">
    <Setter Property="IsReadOnly" Value="True" />
    <Setter Property="BorderThickness" Value="0" />
    <Setter Property="Padding" Value="0" />
    <Setter Property="BorderBrush" Value="Transparent" />
    <Setter Property="Cursor" Value="Arrow" />
</Style>

<TextBox Style="{StaticResource TextBlockBehavior}" Text="Sample" Width="100" Height="30" MouseMove="TextBox_MouseMove" />

也许实现诸如GetCharacterIndexFromPoint()for之类的功能会更容易TextBlock

于 2013-07-08T11:32:39.383 回答