public void ProcessCmdKey(object sender, ProcessCmdKeyEventArgs args) { Keys keyData = args.KeyData; Action act; bool ret = false; if (editBox == null) { if (canvasController.Canvas.Focused && keyActions.TryGetValue(keyData, out act)) { act(); ret = true; } else { if (canvasController.Canvas.Focused && canvasController.SelectedElements.Count == 1 && !canvasController.SelectedElements[0].IsConnector && CanStartEditing(keyData)) { EditText(); // TODO: THIS IS SUCH A MESS! // Will return upper case letter always, regardless of shift key.... string firstKey = ((char)keyData).ToString(); // ... so we have to fix it. Sigh. if ((keyData & Keys.Shift) != Keys.Shift) { firstKey = firstKey.ToLower(); } else { // Handle shift of number keys on main keyboard if (char.IsDigit(firstKey[0])) { // TODO: Probably doesn't handle non-American keyboards! // Note index 0 is ")" string key = ")!@#$%^&*("; int n; if (int.TryParse(firstKey, out n)) { firstKey = key[n].ToString(); } } // TODO: This is such a PITA. Other symbols and shift combinations do not produce the correct first character! } editBox.Text = firstKey; editBox.SelectionStart = 1; editBox.SelectionLength = 0; ret = true; } } } args.Handled = ret; }
public bool RelayProcessCmdKey(Keys keyData) { bool handled = false; if (ProcessCmdKeyRelay != null) { ProcessCmdKeyEventArgs e = new ProcessCmdKeyEventArgs(keyData, false); ProcessCmdKeyRelay(this, e); handled = e.Handled; } return(handled); }
public bool RelayProcessCmdKey(Keys keyData) { bool handled = false; if (ProcessCmdKeyRelay != null) { ProcessCmdKeyEventArgs e = new ProcessCmdKeyEventArgs(keyData, false); ProcessCmdKeyRelay(this, e); handled = e.Handled; } return handled; }
protected void OnProcessCmdKeyEvent(object sender, ProcessCmdKeyEventArgs e) { e.Handled = ServiceManager.Get <IFlowSharpEditService>().ProcessCmdKey(e.KeyData); }