コード例 #1
0
        /// <summary>
        /// Behaviour of AutoCompleteList when anything is typed when AutoCompleteList is focused
        /// Enter, Space - Select current selected AutoCompleteItem and render on screen
        /// Backspace, Delete - if nothing has been searched for, remove AutoCompleteList,
        /// otherwise remove relevant letter from filter string
        /// Navigation keys, shift, Capslock - nothing should happen
        /// Any other character - Render character on screen and filter AutoComplete list to show relevant items
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        internal void OnlstAutoCompleteKeyDown(object sender, KeyEventArgs e)
        {
            Logger.LogInfo("AutoComplete-OnlstAutoCompleteKeyDown", e.Key.ToString());

            if (e.Key == Key.Enter || e.Key == Key.Space || e.Key == Key.Tab)
            {
                CommitSelection();
                ResetAndHideAutoCompletePopup(true);
            }
            else if (e.Key == Key.Escape)
            {
                ResetAndHideAutoCompletePopup(true);
            }
            else if ((e.Key == Key.Back || e.Key == Key.Delete || e.Key == Key.Decimal) && (filterString == string.Empty))
            {
                ResetAndHideAutoCompletePopup(true);
            }
            else if (e.Key == Key.Left || e.Key == Key.Right || e.Key == Key.Up || e.Key == Key.Down ||
                     e.Key == Key.LeftShift || e.Key == Key.RightShift || e.Key == Key.CapsLock)
            {
                //nothing is coming!
            }
            else
            {
                Logger.LogInfo("OnlstAutoCompleteKeyDown-Else", e.Key.ToString());

                bool shift    = Keyboard.IsKeyDown(Key.RightShift) || Keyboard.IsKeyDown(Key.LeftShift);
                bool capsLock = Console.CapsLock;

                if (e.Key == Key.Back)
                {
                    filterString = filterString.Remove(
                        filterString.Length - 1);
                }
                else
                {
                    filterString += TextEditorControl.GetKeyboardCharacter(e);
                    Logger.LogInfo("OnlstAutoCompleteKeyDown-Filter", filterString);
                }
                // Method to filter our AutoComplete list
                DoFilter();

                // Pass the character back to parent to display!
                (this.Parent as ExtensionPopup).RouteEventToCanvas(e);
            }
        }