Сделать Intellisense в стиле VS

Pallaris
Дата: 22.05.2014 19:56:17
Привет!

Хочу вот сделать в своей проге Intellisense. Функционал такой: во время редактирования юзер жмет ctrl+space, показывается listbox с вариантами, юзер может продолжать ввод символов (тогда происходит сортировка listboxa), жать стрелочки и скроллить (происходит выбор из элементов), enter или mouseclick(заменить текущее слово элементом из листбокса), esc - скрыть intellisense.

Вопрос в подходе:

1. Фокус ввода висит всегда на элементе управления. Непонятно, как заставить листбокс реагировать на скроллинг и нажатие клавиш - создать соответствующие обработчики для элемента управления и передавать вызовы листбоксу, если надо (нажатия стрелок, скроллинг, мышь)? Гемор.

2. Фокус ввода - всегда у листбокса интеллисенс (если он был вызыван). Тогда обрабатываем стандартно, кроме нажатия символов. А если юзер нажал символ, то подставляем его на позицию каретки ввода у вызвавшего контрола. Так вроде проще, но получается нужно руками рисовать каретку, если мы лишили элемент управления фокуса.

3. ????

Как вы думаете, как лучше сделать?
Где-то в степи
Дата: 22.05.2014 20:17:30
Pallaris,
первая из гугла http://www.codeproject.com/Articles/5839/DIY-Intellisense
Нахлобуч
Дата: 22.05.2014 20:17:47
Для начала.

Можешь посмотреть как оно сделано в MonoDevelop, например.
Сон Веры Павловны
Дата: 23.05.2014 03:08:53
Я у себя делал intellisense посредством функционала AvalonEdit. Это достаточно просто.
Pallaris
Дата: 23.05.2014 08:33:07
Спасибо за наводки, будем посмотреть