C#-判断Shift,Alt,Ctrl是否被按下,确定所按下的组合键

本文详细介绍如何在应用程序中监测并响应用户击键,特别是组合键如CTRL+S、ALT+F等,通过使用ModifierKeys属性和Keys枚举,结合按位与运算符实现不同操作系统的键盘事件处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在创建接受用户击键的应用程序时,您还可能希望监视 SHIFT、ALT 和 CTRL 键等组合键。当一个组合键与其他键同时按下,或在单击鼠标的同时按下时,您的应用程序能够做出适当响应:字母 S 可能仅导致一个“S”出现在屏幕上,但是如果按下 CTRL+S,则可保存当前文档。

确定所按下的组合键

对 ModifierKeys 属性和 Keys 枚举的值使用按位与运算符(在 Visual Basic 中为 And,在Visual C# 中为 &),确定所按下的组合键。(ModifierKeys 是 Control 类的共享成员;有关共享成员的更多信息,请参阅共享成员。)
' Visual Basic
Private Sub button1_KeyPress(ByVal sender As Object, ByVal e As _
System.Windows.Forms.KeyPressEventArgs) Handles button1.KeyPress
If (Control.ModifierKeys And Keys.Shift) = Keys.Shift Then
MessageBox.Show("Pressed " & Keys.Shift)
End If
End Sub

// C#
private void button1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) {
if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift) {
MessageBox.Show("Pressed " + Keys.Shift);
}
}   

 

------------------------------------------------------------------------------------------------------------------------

首先用BOOL变量保存Ctrl键是否被按下,初始值为FALSE,BOOL的赋值在KeyDown事件里,判断Ctrl键是否被按下,如果被按下,BOOL变量为TRUE,否则为FALSE。KeyUp事件里将BOOL变量设置为FALSE
其次在MouseDown事件里判断BOOL变量的值。

------------------------------------------------------------------------------------------------------------------------

if ((Control.ModifierKeys & Keys.Control) == Keys.Control)
{
MessageBox.Show("Ctrl健被按下");
}

 

推荐阅读

http://www.tao36524.com

 

http://www.tao36524.cn

转载于:https://www.cnblogs.com/hfzsjz/archive/2010/05/31/1748046.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值