Winforms,Scintilla - 保存快捷方式将's'字母插入编辑器

时间:2012-10-05 08:52:50

标签: c# winforms shortcut scintilla

我编写了一个小应用程序来编辑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'被添加到我的编辑器的末尾。我该如何预防?

2 个答案:

答案 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;
        }
    }