У меня есть приложение C#, и есть много форм с элементами управления.
И каждый раз, когда я запускаю свое приложение, формы, у которых много элементов управления, работают медленно.
Итак, есть ли способ открыть его быстрее?Как быстро открыть winform?
ответ
Как вы можете видеть из комментариев, есть не один универсальный «делать вещи быстрее» техник. Вам нужно найти узкое место и исправить это. Вот некоторые указатели:
все ваши элементы управления на всех формах добавленных статически в конструкторе, или добавлены динамически во время выполнения на основе деталей окружающей среды/пользователь/нагруженные динамически с помощью отражения? Это может значительно замедлить время загрузки пользовательского интерфейса.
У вас есть сотни элементов управления на одной форме? Если да, рассмотрите разделение форм на более мелкие куски.
У вас есть сложная логика или доступ к данным во время событий Form_Load? Это также может замедлить отзывчивость пользовательского интерфейса. Попробуйте запустить приложение «clean», а затем загрузите данные асинхронно.
Используйте профайлер! Найдите хороший простой профайлер, чтобы узнать, где именно вы тратите свое время. Вы часто будете удивлены тому, что на самом деле требует времени. Используйте пробную версию хорошего, профайлера, например dotTrace или Ants, и подумайте о покупке его на будущее.
Вместо того, чтобы ускорить загрузку, я бы рекомендовал вам улучшить пользовательский интерфейс.
Сначала сначала загрузите представление Splash (с загрузкой). В следующем потоке, выполняющемся в фоновом режиме, загрузите View с большим количеством элементов управления. Когда ваш просмотр будет загружен полностью, скройте всплывающее окно и покажите свой вид.
Как насчет библиотеки параллельных задач! ;] – Jason
Учитывая указанную информацию при условии я wolud сказать:
разделит управление в возможных группах (это практически невозможно, что пользователю нужно всех управления одновременно) и поместить их в отдельном Tabs
управлении вкладкой ,
Автоматически (по умолчанию) загружает только элементы управления на fisrt Tab
, для других загружает их динамически. В этом случае, если пользователю не нужна определенная функциональность, он никогда не переключится на вкладку, которая содержит его, поэтому элементы управления этой функциональностью, которые пользователь не нужен, не будут загружены, что обеспечит в целом более быстрое время загрузки ,
Если есть данные, которые должны быть выдвинуты на контроле, загрузите его в асинхронном пути, где это возможно,
Надеется, что это помогает.
Лучший способ отделить решение многих слоев
YourAppUI contains forms
YourApp.Controls contains controls
YourApp.BLL contains business logic
YourApp.DAL contains data access layer
В случае, если вы делаете что-то timeconsuming код с элементами управления в виде конструктора или во время загрузки формы Вы можете написать this.SuspendLayout();
перед этим кодом и this.ResumeLayout();
после этого кода.Это предотвращает несколько операций макетирования времени.
У меня была аналогичная проблема, но с гораздо большим количеством элементов управления, чем у вас.
Учитывая, что у вас относительно небольшой набор элементов управления, я считаю, что виновником является уровень доступа к данным, замедляющий все. (Загрузка этих сеток и комбо, например)
Простым действием, которое может вам многое рассказать, является перемещение доступа к данным в событие form_shown.
- 1. Как быстро перерисовать на холсте. C# WINFORM
- 2. Как открыть форму в WinForm
- 3. открыть новые WinForm
- 4. Открыть WinForm в представлении кода
- 5. Как открыть файл, находящийся внутри проекта winform
- 6. Как открыть диалог Winform при закрытии другого?
- 7. Открыть WinForm из приложения WPF?
- 8. Как быстро открыть файл в emacs?
- 9. Как открыть приложение из сафари (быстро)
- 10. Быстро открыть таблицу в SQLDeveloper
- 11. Невозможно открыть быстро создать форму
- 12. Как быстро загрузить 50+ элементов управления? vb.net winform
- 13. открыть новые WinForm с использованием одноплодной шаблон
- 14. Открыть/закрыть приложение winform из ASP.NET
- 15. Как быстро открыть файлы из очень большой папки?
- 16. IntelliJ IDEA: Как быстро открыть редактор таблицы БД?
- 17. Быстро открыть файл данных 1, -1 как изображение
- 18. Копирование изображения PIL так быстро, как я могу его открыть
- 19. Как я могу получить emacs, чтобы быстро открыть новый буфер?
- 20. Как быстро открыть историю проекта в контроле источника?
- 21. как быстро открыть браузер, показывая учебный текст, в ASP.NET VisualBasic2010
- 22. NERDTree (Vim): Как открыть файл с контуром в NERDTree быстро
- 23. Как быстро открыть текущий каталог из командной строки? ОС - Windows
- 24. MEF. Как загрузить winform в контейнер winform?
- 25. . Ошибка кнопки winform winform?
- 26. Открыть файл pdf динамически из toolstripmenu C# winform
- 27. Сохранить/открыть OLE-объект из .mdb в vb winform
- 28. Ошибка при попытке открыть winform с страницы asp
- 29. Открыть книгу и выбрать рабочий лист из winform
- 30. Открыть изображение из списка имя файла C# winform
Сколько стоит «много элементов управления»? Как медленно «открыта медленная»? –
Как насчет загрузки невидимых форм, а затем просто «Show()» их при необходимости? – Jason
Что вы делаете в методе загрузки формы? Сколько заявлений вы выполняете на своих элементах управления? – AngeloBad