Метод, который я часто использую для решения подобных проблем, состоит в том, чтобы итеративно добавлять и вычитать код, пока я не смогу сузить его до одной причины, вызвавшей проблему.
Например, вы могли бы начать с создания очень простого проекта с одним блоком редактирования и одним другим элементом управления и посмотреть, что он делает. Если этот код ведет себя так, как вы хотите, то вы можете постепенно добавлять код, приближая простой проект к конечному продукту, пока не появится ошибка. Затем посмотрите на последний бит кода, который вы добавили, и посмотрите, сможете ли вы вычесть его, пока ошибка не исчезнет. Повторение этого несколько раз может помочь вам найти виновника.
В качестве альтернативы, вы можете начать с существующего (некорректно работающего) кода и начать упрощать его, пока ошибка не исчезнет. Затем вы добавляете обратно часть последней удаленной вещи и выполняете итерацию, как указано выше.
Наконец, в этом случае вы также можете попробовать добавить обработчик события для события Leave элемента управления редактирования и установить точку останова в обработчике. Когда БП срабатывает, проверьте стек вызовов и посмотрите, сможете ли вы понять, какой код ускорил изменение фокуса. Чтобы это работало, ваш отладчик, вероятно, должен быть настроен для отображения кода, для которого у вас нет исходного кода (т.е. отключите опцию Just My Code в отладчике). Вы можете даже вставить (обрезанный) стэк в вопрос, если хотите получить помощь группы в его расшифровке.
p.s. У кого-нибудь есть имя для метода итеративной отладки, описанного выше? Если нет, могу я предложить назвать его методом Ньютона (или, возможно, Ньютоном), поскольку он напоминает метод Ньютона для итеративного поиска корней математических функций.