我编写了一个小应用程序来编辑sql程序并使用了很棒的ScintillaNET代码编辑器控件。我定义了一个Ctrl + S快捷方式来保存文件:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys.Control | Keys.S))
{
saveToolStripButton_Click(this.saveToolStripButton, null);
}
else if (keyData == (Keys.Control | Keys.O))
openToolStripButton_Click(this.openToolStripButton, null);
else if (keyData == (Keys.Control | Keys.N))
newToolStripButton_Click(this.newToolStripButton, null);
else if (keyData == (Keys.Control | Keys.W))
{
if (this.tabControl2.SelectedTab != null)
(this.tabControl2.SelectedTab as WorkspaceControl).closeSelectedFile();
}
return base.ProcessCmdKey(ref msg, keyData);
}
当我刚刚重新保存oldfile时,一切正常,但是当它的新文件 - 在SaveFileDialog关闭并保存文件后 - 字母's'被添加到我的编辑器的末尾。我该如何预防?
答案 0 :(得分:1)
正在添加“s”,因为即使不需要base.ProcessCmdKey
也会被调用。
如果您想阻止进一步处理击键,请确保在适当的位置返回true
。
答案 1 :(得分:0)
您可以使用key_down
事件控制闪烁:
private void scintilla_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.S && e.Control)
{
// Saving ...
e.SuppressKeyPress = true;
}
}