【发布时间】:2011-07-20 00:06:38
【问题描述】:
我正在继承 TextBox:
class Editor : TextBox
我已经覆盖了 OnKeyDown,因为我希望将制表符替换为四个空格:
protected override void OnKeyDown(KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab) {
SelectedText = " ";
e.SuppressKeyPress = true;
}
}
这可行,但不幸的是它也会清除撤消缓冲区。最终结果是,当用户按下 Tab 时,Ctrl+Z 不起作用,并且右键菜单上的“撤消”被禁用。问题似乎是“e.SuppressKeyPress = true;”部分。
有人知道如何解决这个问题吗?
有关更多信息,我正在创建一个相当简单的文本编辑器,我不仅处理 Tab 键(如上),还处理 Enter 键。所以我对 Tab 和 Enter 有这个问题。我知道 RichTextBox 不存在这个问题,但出于各种原因,我想改用 TextBox。
任何帮助都将不胜感激,因为这是我的项目中的一个显示停止问题。
谢谢, 汤姆
【问题讨论】: