正如标题所说,我正在try 将Tab键更改为Enter键.我已经写好了,还挺管用的

public class EnterBasedForm : System.Windows.Forms.Form
{
    public EnterBasedForm()
    {
        KeyPreview = true;
        KeyUp += new KeyEventHandler(OnKeyPressed);
    }

    public void OnKeyPressed(object? sender, KeyEventArgs handler)
    {
        if (handler.KeyCode == Keys.Enter)
        {
            SendKeys.Send("{TAB}");
        }
    }
}

但当按下按钮时,这会按下按钮,而不是改变焦点.每次按Enter键都会播放一个声音.如何禁用Enter键功能?

推荐答案

您可以在ProcessCmdKey()中捕获Enter键,用base.ProcessTabKey()强制Tab键,然后使用Enter键,这样它就不会通过返回TRUE来进一步操作:

public partial class EnterBasedForm : Form
{

    public EnterBasedForm()
    {
        InitializeComponent();
    }

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        if (keyData == Keys.Enter)
        {
            base.ProcessTabKey(true);
            return true;
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }

}

Csharp相关问答推荐

Serilog SQL服务器接收器使用UTC作为时间戳

我需要两个属性类吗

Polly使用泛型重试和重试包装函数

可为空的泛型属性

从应用程序图API调用访问所有者字段

从Blob存储中提取tar.gz文件并将提取结果上载到另一个Blob存储

如何在Parall.ForEachAsync中使用CancerationTokenSource

如何在VS代码中为C#DotNet配置.json选项以调试内部终端的控制台应用程序

如何向事件添加成员

在C#中过滤Excel文件

对于PowerShell中的ConvertTo-SecureString方法,Microsoft如何将初始化向量添加到AES加密中的安全字符串?

BFF到具有AAD/Entra ID B2C的内部API(.NET/ASP.NET核心/标识.Web)

等待一个等待函数

在使用StringBuilder时,如何根据 colored颜色 设置为richTextBox中的特定行着色?

RX操作员使用先前值进行扫描,信号来自值本身

使用CollectionView时在.NET Maui中显示数据时出现问题

在C#ASP.NET内核中使用INT AS-1进行控制器场景的单元测试

.NET Google Workspace API获取错误CS0266

如何使用ODP.NET C#设置Oracle会话时间长度限制

获取应用程序版本信息时出现奇怪信息