эффективная обработка изменений ориентации для всех элементов управления с небольшим изменением кода
-
19-09-2019 - |
Вопрос
У меня есть проект Windows Mobile, построенный на C#.
У меня есть много готовых форм с различными элементами управления, от ListViews до Editfields.Когда пользователь меняет ориентацию, некоторые элементы обновляются неправильно.Например, столбцы Listview одинаковы и не учитывают новое изменение ширины экрана (появляются полосы прокрутки или заполняется половина экрана).
Как вы относитесь к этим изменениям?
Нужно ли мне вручную вызывать эти исправления для каждой формы или я могу создать какой-то глобальный способ исправить это?Я хотел бы использовать самый простой метод, если это возможно.
Я хотел бы избежать классического способа добавления кода во все мои формы.Поэтому я ищу лучшие пути и хотел бы видеть больше идей.
Решение
Я предполагаю, что большинство ваших элементов управления используют DockStyle, и это обеспечит вам 90% пути обновления графического интерфейса при изменении ориентации.Для ListView вам придется добавить некоторый код.
Вы можете добавить обработчик событий в Form.Resize и вставить туда код для изменения размера столбцов ListView.Вы можете отличить портретную ориентацию от альбомной, сравнив ширину и высоту.Также есть способ добавить обработчик событий при фактическом изменении ориентации, но это взаимодействие, и я не помню код наизусть.Form.Resize должно быть достаточно в большинстве случаев.
Вы можете посмотреть пример здесь