0

Я работаю над проектом winforms, содержащим некоторые формы и элементы управления. Каждый из них переведен на 4 языка. Существует одна форма, называемая «PropertiesForm», которая является кошмаром для поддержания: у нее есть табулятор с 6 вкладками и более ста элементов управления в нем, причем грязный код пытается (и часто не работает), чтобы сохранить целостность всей вещи.Как вернуться к чистому пользовательскому интерфейсу?

Поскольку я отвечаю за этот проект, я старался избегать больших изменений этой формы, но это уже невозможно. Внесение больших изменений будет затруднительным и медленным, и это может вызвать проблемы стабильности. Итак, каков наилучший способ восстановления чистого и понятного кода?

Моя идея - создать хотя бы один элемент управления для каждой закладки и синхронизировать их в форме. Моя проблема в том, что я не знаю простого способа сделать это с помощью visual studio. Есть ли какой-либо автоматический способ сохранения обработчиков переводов и событий в новых элементах управления, поскольку копирование-вставка приводит к их исчезновению? Есть ли какой-либо инструмент или надстройка для этой задачи?

Каким должен быть метод очистки конструкции, не нарушая все?

ответ

1

Насколько я знаю, такого инструмента нет, и я не вижу, какой принцип он должен существовать.

Я бы просто создал 6 пользовательских элементов управления, вырезал элементы управления с каждой закладки в соответствующем элементе управления и вставил его во вновь созданные элементы управления. После этого исправить все ошибки путем отправки функций с ошибками в соответствующие UserContols. Однако, если элементы управления вкладками связаны друг с другом с разных вкладок, вы можете столкнуться с некоторыми «проблемами».

Другой подход заключается в логическом разделении элементов управления пользователя (элементов управления датой/временем, текстовых элементов управления, элементов управления, зависящих от бизнес-объекта).

Однако, я боюсь, что обработчики событий и другие вещи вам нужно будет исправить самостоятельно.

1

Вы уже знаете, что не так и как исправить: разбить все на небольшие, слабо связанные компоненты и сделать форму совместной работы.

Посмотрите на шаблон Model-View-Controller. Может быть, это хорошая идея создать отдельный контроллер для каждого компонента, а затем у большой формы есть свой собственный контроллер, который управляет меньшими. Это будет важно для достойной обработки событий: не подключайтесь к событиям управления, а скорее к событиям контроллера.

0

такое изменение, вероятно, должно выполняться в коде, а не в редакторе проекта. Вы говорите себе, что copy-paste начинает ломать вещи: редактор desing предназначен для создания дизайна/макета, но не очень подходит для обработки кода.

Я предлагаю вам начать с разбивки 6-страничных страниц на 6 разных файлов и 1 файл для фактической формы. Затем быстро просмотрите код и посмотрите, можете ли вы найти общие шаблоны, функциональные или логические (т. Е. Определенные группы элементов управления, которые кажутся повторно отображаемыми, или определенные структуры кода, которые используются много). Извлеките их, поместите в отдельные классы и примените в исходных файлах. Типичным примером будет контрольная шляпа с определенным стилем и используется более одного раза: это должно получить выделенный класс/функцию, управляющую стилем.

Между тем, задокументируйте шаги и продолжите тестирование.

Также очень важно (вы не говорите об этом в своем вопросе, но это, вероятно, есть) - это способ получения данных из/в базовую структуру данных/базу данных/файл.Возможно, вам стоит начать с этого: предоставить специальный, стандартизированный для вашего приложения способ обработки связи между данными и пользовательским интерфейсом, а также использовать все элементы управления. Вы знаете, что сделали это правильно, если вам не нужно менять эту логику связи, если вы решите реорганизовать пользовательский интерфейс, базу данных или и то, и другое.

Смежные вопросы