将光标放在WPF RichTextBox中的超链接上
本文关键字:超链接 RichTextBox WPF 光标 | 更新日期: 2023-09-27 18:01:34
我有一个RTB,并希望将鼠标光标更改为超链接上的MouseEnter
上的手。这似乎是默认的按下Ctrl键。我希望它只是当用户悬停在超链接上,而不管Ctrl是否按下。
当前从MouseLeftButtonDown
事件触发到web浏览器的超链接工作得很好:
<RichTextBox.Resources>
<Style TargetType="Hyperlink">
<Setter Property="TextDecorations" Value="Underline"/>
<Setter Property="Foreground" Value="Black"/>
<Setter Property="Cursor" Value="Hand"/>
<EventSetter Event="MouseLeftButtonDown" Handler="Hyperlink_MouseLeftButtonDown" />
</Style>
</RichTextBox.Resources>
背后的代码:
private void Hyperlink_MouseLeftButtonDown(object sender, System.Windows.Input.MouseEventArgs e)
{
var hyperlink = (Hyperlink)sender;
Process.Start(hyperlink.NavigateUri.ToString());
}
事件按预期触发,这只是我想在MouseEnter
上的手光标。我可以在同一个Style TargetType='Hyperlink'>
上有两个独立的事件吗?
p。s RTB格式设置为Rtf。由于
通过将事件更改为PreviewLeftMoseButtonDown
来解决此问题:
<RichTextBox.Resources>
<Style TargetType="Hyperlink">
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="Hyperlink_PreviewMouseLeftButtonDown" />
</Style>
</RichTextBox.Resources>
背后的代码:
private void Hyperlink_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (Keyboard.IsKeyDown(Key.LeftCtrl))
{
var hyperlink = (Hyperlink)sender;
Process.Start(hyperlink.NavigateUri.ToString());
}
}
这将导致光标变为hand按Ctrl下,web浏览器触发点击鼠标按钮上的链接。我正在使用WPF .NET4.5中的扩展WPF工具箱RTB;使用RTB格式化到Rtf的结果可能与其他工具不同。