Данное окно скорее всего сделано на Qt. Но, на WinAPI тоже можно такое сделать. Делаете окно без рамки и отрисовываете внутри нужный bitmap. Пример Borderless Window
Мне кажется, это сделать нереально. Артикулом может быть любой набор букв и цифр. Общего правила кодирования нет.
Единственным выходом вижу иметь базу данных артикулов и по ней сверяться.
Можно сделать логирование работы в файл, и исходя из этого найти место падения программы. Затем проанализировать код и попробовать его исправить.
Можно попробовать запустить программу (release версию) из отладчика gdb и снять дамп памяти для последующего анализа или сделать так
Вижу 2 варианта:
1. Отнаследоваться от MaskedTextBox и реализовать свою логику на основе этого контрола.
2. Рисовать свой контрол и реализовывать всю логику работы вручную (будет сильно труднее, чем первый вариант).
По завершению времени жизни объекта кидайте событие, по которому удаляйте объект из коллекции. Удалением объекта из памяти займется GC в соответствии со своими алгоритмами.