键盘的操作控制:
键盘和鼠标一样是重要输入设备的一部分。开发过程中,会涉及到很多的键盘操作控制。
2.1获取键盘信息
①获取组合键
Windows中有很多默认的组合键,如Ctrl+v,Ctrl+A。本例实现了获取TextBox中组合键的功能,用到KeyEventArgs类中的KeyCode属性,KeyCode属性用来获取KeyUp,KeyDown事件
1 private void textBox_KeyDown(object sender, KeyEventArgs e) 2 { 3 if ((e.Control == true) && (e.KeyCode == Keys.A)) 4 MessageBox.Show("您按下了Ctrl+A"); 5 }
②获取功能键
功能键包括F1,F2,空格键等,获取功能键
1 private void textBox_KeyDown(object sender, KeyEventArgs e) 2 { 3 if (e.KeyCode == Keys.F1) 4 MessageBox.Show("您按下了F1","提示",MessageBoxButtons.RetryCancel);//显示重试按钮 5 }
③判断Caps lock是否锁定
用户在使用键盘输入的时候,可以对有些按键进行锁定,如Numlock,CapsLock。主要用到的API函数为GetKeyState 需要手动引入方法所在的类库。
1 [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "GetKeyState")] 2 public static extern int GetKeyState(int intkey);//intkey:虚拟键键码
主要代码:
1 private void button1_Click(object sender, EventArgs e) 2 { 3 string strCheak = "判断CapsLock是否锁定 "; 4 int intCapsLock = GetKeyState(20); 5 6 if (intCapsLock == 0) 7 strCheak += "CapsLock未锁定 "; 8 else 9 strCheak += "CapsLock锁定 "; 10 MessageBox.Show(strCheak, "判断是否锁定"); 11 }
④将回车映射成Tab键
在用户登录界面,很多时候用户输入完用户名,按下enter键可以直接切换鼠标焦点,进入输入密码的文本框。本例主要用到KeyEventArgs类中的KeyValue和SendKeys类的Send方法。
1 private void textBox1_KeyDown(object sender, KeyEventArgs e) 2 { 3 if (e.KeyValue == 13) 4 { 5 SendKeys.Send("{TAB}"); 6 } 7 }
2.2键盘热键设置
①屏蔽Alt+F4组合键关闭窗口
在程序使用过程中,有时候希望屏蔽Alt+F4键关闭窗口,主要用到的是KeyEventArgs类中的Alt属性,KeyValue属性,和Handled属性,Alt和Handled属性都为bool型。
1 private void Frm_KeyDown(object sender, KeyEventArgs e) 2 { 3 if (e.Alt && e.KeyValue == 115) 4 e.Handled = true; 5 }
②按Esc关闭窗口
程序使用过程中,为了方便操作,通过Esc键退出窗口。主要用到的是Application类的Exit方法。
private void Frm_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData == Keys.Escape) { MessageBox.Show("关闭窗口"); Application.Exit(); } }
2.3键盘操作在实际中的应用