【发布时间】:2016-03-03 19:06:04
【问题描述】:
我有这个类由 RichTextBox 继承。我覆盖了 void OnKeyDown 来检查传入的选项卡,因为我不想要它们。
使用断点,我看到覆盖的 void 被调用,但它没有完成它的工作。
代码如下:
class ProgrammingTextBox : RichTextBox
{
protected override void OnKeyDown(KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab)
{
// Tab was pressed, replace it with space
e.SuppressKeyPress = true; // Don't press Tab
for (int i = 0; i < 4; i++)
{
base.OnKeyDown(new KeyEventArgs(Keys.Space); // Repeat space 4 times
}
}
else base.OnKeyDown(e);
}
}
想要的输出应该是包含 4 个空格但结果为 Tab 的文本,例如未调用来自 for 循环的 OnKeyDown 调用。
知道我该怎么做吗?
【问题讨论】:
-
尝试使用
e.handled = false;而不是抑制,以及keypress事件而不是keydown。 -
它什么也没做。
-
@HansPassant 我同意这个建议,除了
AppendText将从最后一个位置(而不是光标)添加文本。
标签: c# winforms richtextbox