2012-10-05 157 views
1

我编写了一个用于编辑sql程序的小应用程序,并使用很棒的ScintillaNET代码编辑器控件。我定义了一个按Ctrl + S快捷键保存文件:Winforms,Scintilla - 保存快捷方式向编辑器写入''字母

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它的一切OK,但是当它的新文件 - SaveFileDialog关闭后和文件保存 - 字母“s”被添加到我的编辑结束了。我怎样才能防止它?

回答

1

添加了“s”,因为即使在不需要时也会调用base.ProcessCmdKey

如果您想要防止按键的进一步处理,只要确保您在适当的位置返回true

+0

谢谢!非常简单,非常有帮助。 – Joe