/// <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); } }