protected override void OnKeyboardInput(InputEventKeyboard e) { switch (e.KeyCode) { case WinKeys.Tab: Parent.KeyboardTabToNextFocus(this); break; case WinKeys.Enter: Parent.ActivateByKeyboardReturn(EntryID, Text); break; case WinKeys.Back: if (ReplaceDefaultTextOnFirstKeypress) { Text = string.Empty; ReplaceDefaultTextOnFirstKeypress = false; } else if (Text.Length > 0) { int escapedLength; if (EscapeCharacters.TryFindEscapeCharacterBackwards(Text, Text.Length - 1, out escapedLength)) { Text = Text.Substring(0, Text.Length - escapedLength); } else { Text = Text.Substring(0, Text.Length - 1); } } break; default: if (NumericOnly && !char.IsNumber(e.KeyChar)) { return; } if (ReplaceDefaultTextOnFirstKeypress) { Text = string.Empty; ReplaceDefaultTextOnFirstKeypress = false; } if (e.IsChar) { string escapedCharacter; if (EscapeCharacters.TryMatchChar(e.KeyChar, out escapedCharacter)) { Text += escapedCharacter; } else { Text += e.KeyChar; } } break; } }
// ============================================================================================================ // Text Editing Functions // ============================================================================================================ public void InsertCharacter(int index, char ch) { string escapedCharacter; int caratAt = index; string text = Text; if (EscapeCharacters.TryMatchChar(ch, out escapedCharacter)) { text = text.Insert(CaratAt, escapedCharacter); caratAt += escapedCharacter.Length; } else { text = text.Insert(CaratAt, ch.ToString()); caratAt += 1; } Text = text; CaratAt = caratAt; }
public void RemoveCharacter(int index) { int escapedLength; if (EscapeCharacters.TryFindEscapeCharacterBackwards(Text, index, out escapedLength)) { Text = Text.Substring(0, Text.Length - escapedLength); var carat = index - 1; var before = index == 0 ? null : Text.Substring(0, index - 1); var after = Text.Substring(index); Text = before + after; CaratAt = carat; } else { var carat = index - 1; var before = index == 0 ? null : Text.Substring(0, index - 1); var after = Text.Substring(index); Text = before + after; CaratAt = carat; } }
private static string ReplaceEncodedValue(Match match) { return(EscapeCharacters.First(kvp => kvp.Value == match.Value).Key); }
// ============================================================================================================ // Input // ============================================================================================================ protected override void OnKeyboardInput(InputEventKeyboard e) { switch (e.KeyCode) { case WinKeys.Tab: Parent.KeyboardTabToNextFocus(this); break; case WinKeys.Enter: Parent.OnKeyboardReturn(EntryID, Text); break; case WinKeys.Back: if (ReplaceDefaultTextOnFirstKeypress) { Text = string.Empty; ReplaceDefaultTextOnFirstKeypress = false; } else if (!string.IsNullOrEmpty(Text)) { int escapedLength; if (EscapeCharacters.TryFindEscapeCharacterBackwards(Text, Text.Length - 1, out escapedLength)) { Text = Text.Substring(0, Text.Length - escapedLength); } else { Text = Text.Substring(0, Text.Length - 1); } } break; default: // place a char, so long as it's within the char count limit. if (MaxCharCount != 0 && Text.Length >= MaxCharCount) { return; } if (NumericOnly && !char.IsNumber(e.KeyChar)) { return; } if (ReplaceDefaultTextOnFirstKeypress) { Text = string.Empty; ReplaceDefaultTextOnFirstKeypress = false; } if (e.IsChar && e.KeyChar >= 32) { string escapedCharacter; if (EscapeCharacters.TryMatchChar(e.KeyChar, out escapedCharacter)) { Text += escapedCharacter; } else { Text += e.KeyChar; } } break; } }