用C#保存或编辑记录的快捷键

时间:2015-11-24 07:00:06

标签: c# winforms

我正在开发一个Windows窗体应用程序,其中我有一些文本框值和两个按钮,一个是保存,另一个是编辑。用于在点击上保存记录的按钮代码工作正常。但现在我想通过按CTRL + S进行保存 CTRL + E进行编辑,将键盘快捷键键添加到SAVE和EDIT记录中。请帮我解决一下这个。我是这个编程领域的新手,所以请精确非常清楚在程序中编写我的代码。

由于

5 个答案:

答案 0 :(得分:1)

首先,您应该将Form.KeyPreview的{​​{1}}属性设置为Form。 导致true属性(as MSDN says):

  

获取或设置一个值,该值指示表单是否将接收密钥   将事件传递给具有焦点的控件之前的事件。

然后有必要为Form.KeyPreview的{​​{1}}事件创建事件处理程序:

KeyDown

答案 1 :(得分:0)

在表单中添加- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { if(IS_IPHONE_6P) { return CGSizeMake(([UIScreen mainScreen].bounds.size.width - 70) / 2, ([UIScreen mainScreen].bounds.size.width - 70) / 2); } else { return CGSizeMake(([UIScreen mainScreen].bounds.size.width - 60) / 2, ([UIScreen mainScreen].bounds.size.width - 60) / 2); } } 。添加两个MenuStrip保存并编辑,将它们附加到您的EventHandler按钮点击。将所需的值(Ctrl + S,Ctrl + E)分配给ToolStripMenuItem属性。

如果您的应用程序不需要主菜单,则可以隐藏它(ShortcutKeys = false)。

答案 2 :(得分:0)

您也可以尝试覆盖表单的ProcessDialogKey()。

    protected override bool ProcessDialogKey(Keys keyData)
    {
        Keys key = keyData & Keys.KeyCode;
        bool contrloIsPressed = (keyData & Keys.Control) == Keys.Control ? true : false;

        switch (key)
        {
            case Keys.S:
                if (contrloIsPressed)
                    Save();
                break;
            case Keys.E:
                if (contrloIsPressed)
                    Edit();
                break;
        }

        return base.ProcessDialogKey(keyData);
    }

答案 3 :(得分:0)

可能是为了帮助你。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        const int WM_KEYDOWN = 0x100;
        const int WM_SYSKEYDOWN = 0x104;

        if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN))
        {
            switch (keyData)
            {
                case Keys.Q | Keys.Control:
                    Close();

                    return false;
            }
        }

        return base.ProcessCmdKey(ref msg, keyData);
    }

答案 4 :(得分:-1)

protected override bool ProcessCmdKey(ref Message message, Keys keys)
{
            switch (keys)
            {
                case Keys.A | Keys.Control:
                    // ... Process Shift+Ctrl+Alt+B ...
                    adding = true;
                    updating = false;
                    EnableText();
                    ClearText();
                    AutoNo();
                    return true; // signal that we've processed this key
                case Keys.S | Keys.Control:
                    // ... Process Shift+Ctrl+Alt+B ...
                    SaveUpdate();
                    return true; // signal that we've processed this key
                case Keys.E | Keys.Control:
                    // ... Process Shift+Ctrl+Alt+B ...
                    updating = true;
                    adding = false;
                    EnableText();
                    return true; // signal that we've processed this key
                case Keys.D | Keys.Control:
                    // ... Process Shift+Ctrl+Alt+B ...
                    DeleteRecord();
                    return true; // signal that we've processed this key
            }
            // run base implementation
            return base.ProcessCmdKey(ref message, keys);
}