最小复制:(Access 2016)
预期的行为:按Ctrl-Y或工具栏中的“重做”按钮以“撤消撤消操作”并找回文本。
实际行为:Ctrl-Y不会执行任何操作,并且工具栏中的“重做”按钮将显示为灰色。
注意:仅当文本格式为“ Rich Text”时才会发生。对于“纯文本”文本框,Ctrl-Y仍然不起作用,但是至少可以使用“重做”按钮(除非您两次按Ctrl-Z,但这是另一个问题的困扰)。
问题:是否可以为RTF文本框激活“重做”?
背景:我们是基于MS-Access的软件产品的开发人员(因此,我在这里问的是SuperUser,而不是SuperUser),我们的客户(正确地)习惯了Ctrl-Z可恢复的操作。如果Access中没有对此功能的内置支持,则也欢迎基于VBA的解决方法的想法。
答案 0 :(得分:1)
我认为无法激活 Redo 。但是,您可以自己使用一些VBA来实现它(通过听Ctrl + Z组合键,如果出现,则存储文本,如果出现Ctrl + Y,然后将文本还原为最后一个Ctrl + Z)>
Dim lastUndo As String
Private Sub MyRichTextbox_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyZ And Shift And acCtrlMask = acCtrlMask Then
lastUndo = MyRichTextbox.Text
ElseIf KeyCode = vbKeyY And Shift And acCtrlMask = acCtrlMask Then
Dim t As String
t = MyRichTextbox.Text 'Allow for toggling undo
MyRichTextbox.Text = lastUndo
lastUndo = t
End If
End Sub
当然,您可以将此逻辑移到单独的类,然后将其应用于表单加载时表单上的所有富文本控件(或所有具有特定标签的表单)。这样可以更轻松地为项目管理此项目。