Занимаюсь поддержкой одного старого проекта и задался таким вопросом:
как лучше стандартизировать поведение всех окон и элементов интерфейса в программе?
И главное как все это оптимизировать в случае разработки на C# под VS.
Для примера: все окна должны поддерживать закрытие по нажатию ESC и выполнение какого-то действия (каждое окно свое) по нажатию Enter, все окна предпросмотра при печати должны поддерживать навигацию по стрелкам на клавиатуре и изменение масштаба при скроллировании колесиком мышки, все комбобоксы и листбоксы должны вместо стандартной автоподстановки должны при ручном вводе предлагать возможные варианты (алгоритм тоже зависит от контекста).
Первая мысль — сделать свои собственные компоненты на основе стандартных, но проблема в том что уже задействовано много сторонних библиотек компонентов.
Вручную проверять каждую форму и каждый элемент управления — долго и непродуктивно. Постоянно кто-то что-то да забудет добавить.