Pallaris
Дата: 22.05.2014 19:56:17
Привет!
Хочу вот сделать в своей проге Intellisense. Функционал такой: во время редактирования юзер жмет ctrl+space, показывается listbox с вариантами, юзер может продолжать ввод символов (тогда происходит сортировка listboxa), жать стрелочки и скроллить (происходит выбор из элементов), enter или mouseclick(заменить текущее слово элементом из листбокса), esc - скрыть intellisense.
Вопрос в подходе:
1. Фокус ввода висит всегда на элементе управления. Непонятно, как заставить листбокс реагировать на скроллинг и нажатие клавиш - создать соответствующие обработчики для элемента управления и передавать вызовы листбоксу, если надо (нажатия стрелок, скроллинг, мышь)? Гемор.
2. Фокус ввода - всегда у листбокса интеллисенс (если он был вызыван). Тогда обрабатываем стандартно, кроме нажатия символов. А если юзер нажал символ, то подставляем его на позицию каретки ввода у вызвавшего контрола. Так вроде проще, но получается нужно руками рисовать каретку, если мы лишили элемент управления фокуса.
3. ????
Как вы думаете, как лучше сделать?