撤消(ctrl+;z)在格式文本的richtextbox中不工作。WPF C#
我正在使用richTextBox,它将根据文本更改行(段落)的颜色。这是我的示例代码撤消(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
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事件,因此在进行样式设置之前,必须先解除事件的锁定,然后再重新锁定