首页 > 解决方案 > C# winform 上的 AcceptButton 属性是否可以在不使用 TextBox 的情况下从 Enter 键更改为使用 Ctrl+Enter?

问题描述

我正在对我不久前编写的程序进行更新(感谢大家对我之前的问题的帮助!),我遇到了一个小问题。我想这样做,以便我的程序使用 CTRL+ENTER 将其数据提交到 SharePoint 列表,而无需 TextBox。

我已经搜索了几个小时的 Google 搜索,但没有找到任何真正为我提供我想要的功能的东西。我不喜欢在 WinForm 上使用 AcceptButton 功能,所以欢迎提出任何建议来完成这项工作。

我已经尝试了此代码的各种变体以使其合作,但它根本没有成功。

if (e.SuppressKeyPress = (e.KeyData == (Keys.Control | Keys.Enter)))
{
SubmitBtn.Focus();
SubmitBtn.PerformClick();
}

一旦按下 CTRL+ENTER,我只需要程序单击一个按钮。按钮本身完成其余的工作。

标签: c#winformskeyboard-shortcutsdesktop-applicationvisual-studio-2019

解决方案


经过大量的试验、错误和拼接来自大量不同论坛的样本后,我确实设法让它工作。这就是最终为我工作的东西。如果有任何编辑可以使其更加精简,请随时告诉我。

private void SubmitShortcut(object sender, KeyEventArgs e)
        {
            if(e.KeyCode == Keys.Enter && e.Control)
            {
                e.Handled = true;
                SubmitBtn_Click(sender, e);
            }
            else if (e.KeyCode != Keys.Enter && e.Control)
            {
                e.Handled = false;
            }
        }

推荐阅读