Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
撤消(ctrl+;z)在格式文本的richtextbox中不工作。WPF C#_C#_Wpf - Fatal编程技术网

撤消(ctrl+;z)在格式文本的richtextbox中不工作。WPF C#

撤消(ctrl+;z)在格式文本的richtextbox中不工作。WPF C#,c#,wpf,C#,Wpf,我正在使用richTextBox,它将根据文本更改行(段落)的颜色。这是我的示例代码 private void RTB_Main_SelectionChanged(object sender, RoutedEventArgs e) { Paragraph para = RTB_Main.CaretPosition.Paragraph; TextRange TR = new TextRange(para.ContentStart, para.Cont

我正在使用richTextBox,它将根据文本更改行(段落)的颜色。这是我的示例代码

    private void RTB_Main_SelectionChanged(object sender, RoutedEventArgs e)
    {
        Paragraph para = RTB_Main.CaretPosition.Paragraph;
        TextRange TR = new TextRange(para.ContentStart, para.ContentEnd);
        para.Foreground = TR.Text == "STATUS : PASS" ? Brushes.Green : TR.Text == "STATUS : FAIL" ? Brushes.Red : Brushes.Black;
    }
在我尝试执行撤消(ctrl+z)操作之前,一切正常

问题场景:

在richTextBox中键入状态:通过。文本颜色将变为绿色(一切正常)

按Backspace可删除最后一个S(状态:PAS)。文本颜色更改为黑色(工作正常)

现在按Ctrl+z键返回S。这里什么也没发生


为什么撤销在这里不起作用?是否有更好的方法格式化文本,以便撤消重做操作正常工作?

您应该打开ShortCutsEnabled属性

RTB_Main.KeyDown += new KeyEventHandler(RTB_Main_KeyDown);

void RTB_Main_KeyDown(object sender, KeyEventArgs e)
{
     if(e.KeyCode == Keys.Z && e.Control) {
         //Undo users last update somehow
     }
}

您应该打开ShortCutsEnabled属性

RTB_Main.KeyDown += new KeyEventHandler(RTB_Main_KeyDown);

void RTB_Main_KeyDown(object sender, KeyEventArgs e)
{
     if(e.KeyCode == Keys.Z && e.Control) {
         //Undo users last update somehow
     }
}

您使用SelectionChanged事件而不是TextChanged事件是否有原因?我有一个类似的应用程序,使用CTRL+Z正确运行的TextChangedEvent。请注意,更改格式将被视为RichTextBox的TextChanged事件,因此在进行样式设置之前,必须先解除事件的锁定,然后再重新锁定


您使用SelectionChanged事件而不是TextChanged事件有什么原因吗?我有一个类似的应用程序,使用CTRL+Z正确运行的TextChangedEvent。请注意,更改格式将被视为RichTextBox的TextChanged事件,因此在进行样式设置之前,必须先解除事件的锁定,然后再重新锁定