如何使RichTextBox停止使用关键手势

时间:2016-05-13 09:15:45

标签: c# wpf keyboard-shortcuts

RichTextBox提供lot of commands附带的关键手势。

然而,当设置if((i % 3) == 0) { //Append a </tr> to close the existing tr. //Append a new <tr> to begin the new row. } 时,许多命令没有意义,也不采取任何行动,例如 Ctrl + I Ctrl + R 。然而,当窗口中的命令使用其中一个关键手势时,当RichtTextBox具有焦点时,窗口中的命令不会触发:

IsReadOnly=True

<Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:"
        mc:Ignorable="d">
<Window.CommandBindings>
    <CommandBinding Command="local:MainWindow.MyCommand" Executed="MyCommandBinding_Executed" />
</Window.CommandBindings>
<StackPanel>
    <RichTextBox Height="50" IsReadOnly="True" />
    <CheckBox Content="This is a checkbox" />
    <TextBlock Name="whatsGoingOn" />
</StackPanel>
</Window>

现在也许正确的答案是“不要将RichTextBox与using System.Windows; using System.Windows.Input; public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } public static RoutedUICommand MyCommand = new RoutedUICommand( "My Command", "MyCommand", typeof(MainWindow), new InputGestureCollection() { new KeyGesture(Key.R, ModifierKeys.Control) }); private void MyCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e) { whatsGoingOn.Text += "."; } } 一起使用,而是使用其他东西”,但我们假设我必须或想要使用RichTextBox。

即使RichTextBox具有焦点,我还能做些什么才能使关键手势触发我的命令?

1 个答案:

答案 0 :(得分:0)

您可以拦截RichTextBox的PreviewKeyDown事件中的击键。将e.Handled成员设置为true,这将阻止实际处理密钥。

希望有所帮助