C#_热键输入框的形成
/// <summary> /// 系统热键数据类。 /// </summary> public class HotkeyValue { /// <summary> /// 修改键。 /// </summary> public Keys Modifiers = Keys.None; /// <summary> /// 按键值。 /// </summary> public Keys KeyCode = Keys.None; /// <summary> /// 初始化类 <see cref="HotkeyValue"/> 的新实例。 /// </summary> /// <param name="modifiers">The modifiers.</param> /// <param name="keyCode">The key code.</param> public HotkeyValue(Keys modifiers, Keys keyCode) { this.Modifiers = modifiers; this.KeyCode = keyCode; } /// <summary> /// 已重载,返回“Ctrl+Alt+A”格式的字符串。 /// </summary> /// <returns>类似“Ctrl+Alt+A”格式的字符串</returns> public override string ToString() { StringBuilder sb = new StringBuilder(); if ((this.Modifiers & Keys.Control) != 0) sb.Append("Ctrl+"); if ((this.Modifiers & Keys.Shift) != 0) sb.Append("Shift+"); if ((this.Modifiers & Keys.Alt) != 0) sb.Append("Alt+"); if (this.KeyCode != Keys.None) sb.Append((char)this.KeyCode); return sb.ToString(); } }
//构造 public Form2() { InitializeComponent(); //定义KeyPress事件 textBox1.KeyPress += delegate(object sender, KeyPressEventArgs e) { e.Handled = true; }; } //TextBox的KeyDown事件 private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.Modifiers == 0) //没有修改键 { e.Handled = true; return; } HotkeyValue value = null; if (e.KeyCode == Keys.ShiftKey || e.KeyCode == Keys.ControlKey || e.KeyCode == Keys.Menu || e.KeyCode == Keys.None) {//除修改键外,没有按键 value = new HotkeyValue(e.Modifiers, Keys.None); } else { value = new HotkeyValue(e.Modifiers, e.KeyCode); } textBox1.Text = value.ToString();//赋值 e.Handled = true; base.OnKeyDown(e); }
转载请注明本文链接。版权所有©2010 李佳龙专栏,保留所有权利。