c#如何使ProcessCmdKey成为公共方法

本文关键字:方法 何使 ProcessCmdKey | 更新日期: 2023-09-27 18:09:34

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        switch (keyData)
        {
            case Keys.NumPad0:
                TheAddingResult(0);
                return true;
            default:
                return base.ProcessCmdKey(ref msg, keyData);
        }
    }

我在做一个计算器我想把每个按钮都分配给某个热键但我不能这样做我必须用这种方法这不是很有用有没有一种方法我可以使用这个方法比如如果它是任何公共方法?就像在button_click事件keydata = keys。Numpad0或类型,例如processcmdkey(keys.numpad0)是可能的吗?

编辑:有人写了这段代码,然后删除了它,我喜欢它,但我只是想知道在调用它时,在第一个参数中输入什么

     public bool hotkeys(ref Message msg, Keys keyData)
    {
        return ProcessCmdKey(ref msg, keyData);
    }
     private void button17_Click(object sender, EventArgs e)
    {
        hotkeys(ref  ,Keys.Back);
        erasingall();
    }

召唤时第一个参数应该输入什么?

c#如何使ProcessCmdKey成为公共方法

如果您直接单击按钮,请使用ClickEvent,并在订阅者内部使用适当的参数执行方法。可能您必须将包含该方法的类作为依赖注入,或者使该方法静态,或者直接在部分类中创建它。例如:

 private void ButtonPlusClick(object sender, EventArgs e)
    {
        this.operationsContainer.Execute(Constants.PlusSign);
    }

其中operationsContainer是保存操作方法的类。

如果你想直接从你的键盘输入,你可以从你的窗体属性设置KeyPreview为True,然后使用事件键按,如FormDetectKeyPress。例如:

private void FormDetectKeyPress(object sender, KeyPressEventArgs e)
    {
        var pressedKeyValue = e.KeyChar;
        switch (pressedKeyValue)
        {
            case '+':
                {
                    this.ButtonPlusClick(sender, null);
                }
                break;
           default:
                return;
          }

您可以在FormDetectKeyPress订阅者中以类似的方式添加任何带有按钮单击事件的操作和相应的键盘按钮。

相关文章: