我想知道是否有任何方法可以获取鼠标在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没有任何类似的方法。
有没有人有想法?
风筝
答案 0 :(得分:0)
如果GetCharacterIndexFromPoint()
没有TextBlock
这样的现成功能,我可以建议使用Style
TextBox
来模拟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" />
1}}。
示例:
GetCharacterIndexFromPoint()
为TextBlock
实现{{1}}等功能可能会更容易。