|
0 / 0 / 0
Регистрация: 29.11.2013
Сообщений: 25
|
|
Тормозит dataGridView при повторной инициализации06.12.2013, 03:33. Показов 2373. Ответов 6
Метки нет (Все метки)
У меня есть dataGridView размера примерно 40x16.
Изначально в конструкторе таблица имеет всего один столбец, а при инициализации я этот столбец клонирую на все остальные 40 посредством add(). Перед клонированием я изменяю ширину таблицы до 1 столбца (чтобы аннулировать все столбцы, которые были в таблице до этого, т.к. таблица у меня в зависимости от ситуации инициализируется на разное число столбцов, не только 40). Далее заполняю таблицу данными. В первый раз таблица строится мгновенно. Если же я хочу переинициализировать таблицу, и заново прохожу описанные этапы: 1. Изменяю размер таблицы до 1 столбца 2. Клонирую столбец номер 1 на нужное число столбцов 3. Заполняю данными То второй раз она строится ОЧЕНЬ долго, вплоть до 5-10 секунд. С чем это может быть связано, и как этого избежать?
0
|
|
| 06.12.2013, 03:33 | |
|
Ответы с готовыми решениями:
6
DatagridView тормозит при загрузке данных
|
|
71 / 71 / 23
Регистрация: 02.02.2012
Сообщений: 309
|
||
| 06.12.2013, 05:51 | ||
|
А просто удалить столбцы разве нельзя? А данные в каком формате Вы въюхе даете?
0
|
||
|
0 / 0 / 0
Регистрация: 29.11.2013
Сообщений: 25
|
||
| 06.12.2013, 08:43 [ТС] | ||
|
Данные даю сам через Value = "blablabla";
0
|
||
|
71 / 71 / 23
Регистрация: 02.02.2012
Сообщений: 309
|
|
| 06.12.2013, 09:07 | |
|
В описании свойства: Возвращает или задает количество столбцов, отображаемых в DataGridView. Очень смущает слово "отображаемых ". Так что видимо нет, не удаляет. Посмотрите чему равно: dataGridView.Columns.count; на каждом этапе.
0
|
|
|
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
|
||
| 06.12.2013, 09:18 | ||
|
Remmor, вы бы дальше заголовка по своей же ссылке прочитали бы:
0
|
||
|
71 / 71 / 23
Регистрация: 02.02.2012
Сообщений: 309
|
|
| 06.12.2013, 11:06 | |
|
kodv, согласен ошибся.
0
|
|
|
0 / 0 / 0
Регистрация: 29.11.2013
Сообщений: 25
|
|||||||||||||||||||||
| 07.12.2013, 03:40 [ТС] | |||||||||||||||||||||
|
Думаю, что все тормоза у меня из-за того, что я каждой ячейке задаю напрямую некоторые свойства, а не по шаблону.
Потестировал, получилось примерно так: 1. Если задавать тип ячейки напрямую, например DataGridViewTextBoxCell, то тормозит 2 секунды 2. Если задавать padding для ячейки, например Windows::Forms::Padding(10, 0, 10, 0), то тормозит аж 13 секунд, тогда как при установке какого-нибудь другого свойства из категории Style, например, цвета, на скорость практически не влияет. И снова повторюсь, все тормоза только при вторичной инициализации столбцов, при первичной тормозов нет. Добавлено через 2 часа 34 минуты Провел еще ряд тестов. Если установить AutoSizeRowsMode = AllCells, то времени на повторную инициализацию тратится еще в 3 раза больше (это ахтунг - 30 секунд). Если стиль отступа для ячейки установить не так
Думаю, что все эти тормоза при повторной инициализации таблицы связаны с работой сборщика мусора, который убирает невиданное количество локальных мелких данных. Добавлено через 1 час 35 минут Еще одна интересная заметка. Если в колонке, у которой по умолчанию стоит тип DataGridViewCheckBoxCell, переопределить какую-либо ячейку на тип DataGridViewTextBoxCell, то все работает хорошо. Однако, если после такой процедуры убрать данную смешанную колонку, потом опять добавить пустую и попытаться в ней сделать тоже самое, то вылетает ошибка "недопустимый тип значения, определяющего форматирование ячейки" Добавлено через 6 часов 18 минут И с этой проблемой разобрался. Оказалось, что если в столбце с ячейками типа DataGridViewCheckBoxColumn изменить какую-либо ячейку на DataGridViewTextBoxColumn, и при этом у столбца стоит режим AutoSizeMode, учитывающий ширину всех ячеек в столбце, например AllCells, то произойдет ошибка форматирования столбца 'Error happened Formatting, PreferredSize'. Простейший способ, как этого избежать, это перед изменением типа ячейки выключать AutoSizeMode, скажем установив его в None, а после изменения типа ячейки, включать обратно. Может это и не совсем кошерно, но других способов я не нашел. Если кто знает, подскажите.
И нашлась еще одна фига с маслом ( Оказывается, действительно, dataGridView отброшенные столбцы никуда не теряет, а где-то там у себя хранит, т.к. при добавлении порциями достаточно большого числа столбцов выпадает ошибка: Сумма значений FillWeight столбцов не должна превышать 65535. Т.е., допустим, я 10 раз подряд делаю такое действо: 1. Убрать 50 столбцов 2. Добавить 50 столбцов. В конце концов это приводит к вышеописанной ошибке, как будто таблица разрослась до 500 (или около того) столбцов, хотя на деле ее ширина именно 50. Добавлено через 1 час 56 минут В итоге решил все проблемы разом: 1. Проблема тормозов при переинициализации таблицы, а так же конечное число сеансов добавления новых столбцов, решил простым методом - делаю таблицу из фиксированного числа столбцов (по максимуму, которые мне могут понадобиться), а затем просто ненужные столбцы делаю невидимыми (Visible = false). Вот и все. 2. Проблема ошибки форматирования при добавлении разнородных ячеек в один столбец, при включенном режиме AutoSizeMode = AllCells решаю так - добавляю все ячейки еще до первого отображения таблицы на экране, тогда ошибка форматирования не сработает, т.к. столбцы еще не форматировались. Если же надо изменить тип ячейки в уже хоть раз отрисованной таблице, то просто надо выключить форматирование для столбца, изменить ячейки, и включить форматирование снова.
0
|
|||||||||||||||||||||
| 07.12.2013, 03:40 | |
|
Помогаю со студенческими работами здесь
7
Избавиться от повторной вставке при перезагрузке Ошибка при повторной установке CorelDraw X8 Ошибка при повторной компиляции Marlin_MC3_11062014 Бывают ли косяки при повторной активации Windows 8.1? POLINK: fatal error при повторной компиляции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|