按下该Alt键时,焦点通常会转到窗口的菜单。我需要全局禁用它。因为我的应用程序使用Alt密钥。当用户按下某个键与Alt键组合时,我的应用程序将另一个键发送到活动应用程序。所以我只需要Alt在它打开菜单时忽略它。
我是编程新手,我正在寻找 VB.Net 或 C# 代码。
按下该Alt键时,焦点通常会转到窗口的菜单。我需要全局禁用它。因为我的应用程序使用Alt密钥。当用户按下某个键与Alt键组合时,我的应用程序将另一个键发送到活动应用程序。所以我只需要Alt在它打开菜单时忽略它。
我是编程新手,我正在寻找 VB.Net 或 C# 代码。
这对我有用:
private class AltKeyFilter : IMessageFilter
{
public bool PreFilterMessage(ref Message m)
{
return m.Msg == 0x0104 && ((int)m.LParam & 0x20000000) != 0;
}
}
然后像这样添加消息过滤器:
Application.AddMessageFilter(new AltKeyFilter());
你可以尝试这样的事情:
public void HandleKeyDown(object sender, keyEventArgs e)
{
//do whatever you want with or without Alt
if (e.Modifiers == Keys.Alt)
e.SuppressKeyPress = true;
}
这应该允许您将 Alt 用于您想要的任何东西,但不要激活菜单条。请注意,e.SuppressKeyPress = true
还设置了e.Handled = true
.
https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.keyeventargs.suppresskeypress?view=windowsdesktop-5.0