protected void UpdateTextBoxWithHotkey(HotkeyStruct hks, TextBox tb, Hotkey.Type oldType) { if (hks.id == Hotkey.Type.None) { return; } if ((int)Keys.Alt == hks.modifier) { tb.Text = "Alt + "; } else if ((int)Keys.Control == hks.modifier) { tb.Text = "Ctrl + "; } else if ((int)Keys.Shift == hks.modifier) { tb.Text = "Shift + "; } if (hks.keyCode != (int)Keys.ControlKey && hks.keyCode != (int)Keys.ShiftKey && hks.keyCode != (int)Keys.Menu && hks.keyCode != (int)Keys.Alt) { string keyChar = KeyCodeToUnicode((Keys)hks.keyCode); if (keyChar == "None") { } if (keyChar == "") { tb.Text += (Keys)hks.keyCode; } else { tb.Text += keyChar; } } Hotkey.Type id = (Hotkey.Type)Convert.ToInt32(tb.Tag); if (oldType != hks.id && oldType != Hotkey.Type.None) { // clear other textBox foreach (Control x in this.Controls) { if (x is TextBox) { Hotkey.Type subId = (Hotkey.Type)Convert.ToInt32(x.Tag); if (oldType == subId) { ((TextBox)x).Text = String.Empty; break; } } } } }
private void Capture_KeyDown(object sender, KeyEventArgs e) { if ((int)e.KeyCode <= 6) { e.SuppressKeyPress = true; return; } TextBox tb = (TextBox)sender; tb.Text = ""; Hotkey.Type id = (Hotkey.Type)Convert.ToInt32(tb.Tag); if (e.KeyCode == Keys.Escape) { Hotkey.SetHotkey(id, 0, 0); //this.del.UpdateHotkeySetup(); e.SuppressKeyPress = true; return; } int modifier = 0; if (e.Alt) { modifier = (int)Keys.Alt; } else if (e.Control) { modifier = (int)Keys.Control; } else if (e.Shift) { modifier = (int)Keys.Shift; } HotkeyStruct ohk = Hotkey.GetHotkeyWithKey((int)e.KeyCode, modifier); HotkeyStruct nhk = Hotkey.SetHotkey(id, (int)e.KeyCode, modifier); UpdateTextBoxWithHotkey(nhk, tb, ohk.id); e.SuppressKeyPress = true; }