Example #1
0
        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;
            }
        }
Example #2
0
        // ============================================================================================================
        // 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;
        }
Example #3
0
        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);
 }
Example #5
0
        // ============================================================================================================
        // 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;
            }
        }