如何在 C# 中使用 KeyPress 事件按下 Alt 时显示消息?

Posted

技术标签:

【中文标题】如何在 C# 中使用 KeyPress 事件按下 Alt 时显示消息?【英文标题】:How to show a message when Alt is pressed in C# using KeyPress event? 【发布时间】:2021-01-24 18:10:24 【问题描述】:

我想在 Windows 窗体应用程序和 C# 中使用 KeyPress 事件按下 Alt 时显示一条消息。以下代码仅适用于 Shift 和 Control,但不适用于 Alt。它没有给我一个错误,但是当我执行程序时它不起作用。

 public static System.Windows.Forms.Keys ModifierKeys
        
            get;
        
 private void Form1_KeyPress(object sender, KeyPressEventArgs e)
        

            if((Control.ModifierKeys & Keys.Alt) == Keys.Alt)
            
            
                ((Control)sender).Hide(); 
                MessageBox.Show("pppppppppppppppppppppp");
            

        

【问题讨论】:

【参考方案1】:

使用KeyDown,因为它内置了修饰符和特殊键,Alt 键特别是非字符键。

private void Form1_KeyDown(object sender, KeyEventArgs e)

    if (e.Alt)
    
        MessageBox.Show("Alt key was pressed down");
    

【讨论】:

【参考方案2】:

按键事件:

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1

public partial class Form1 : Form

    public Form1()
    
        InitializeComponent();
    
    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    
        if (e.Modifiers == Keys.Alt)
        
            MessageBox.Show("Alt key pressed");
        
    


【讨论】:

那不行,会报错docs.microsoft.com/en-us/dotnet/csharp/misc/cs0221 KeyPressEventArgs 没有 Modifiers 属性。 docs.microsoft.com/en-us/dotnet/api/… 链接到KeyDown 事件,而您的答案是KeyPress 事件,事件参数不同,您是否实际测试过您的答案? 这不是很好,它在 (char)Keys.Alt.``` 下给了我错误 private void textBox1_KeyPress(object sender, KeyPressEventArgs e) if (e.Modifiers == Keys .Alt) MessageBox.Show("Alt 键被按下"); ```

以上是关于如何在 C# 中使用 KeyPress 事件按下 Alt 时显示消息?的主要内容,如果未能解决你的问题,请参考以下文章

c# keydown事件问题

[C#]C# 如何捕获键盘按钮和组合键以及KeyPress/KeyDown事件之间的区别 (附KeyChar/KeyCode值)

如何在 IE 中为按钮事件触发 Keypress 事件

VB keypress事件中键盘上每个键的KeyAscii值分别是啥?

C#中,Keypress这个键盘事件是怎么弄出来的。

jquery 键盘事件 keypress() keydown() keyup()