Столбцы перемещаются посредством изменения свойства displayIndex, либо мышкой (не знаю, как ещё можно).
Без ownerDraw работает. А с ним, заголовок первого столбца перемещается, но информация остаётся слева. Кроме того, информация второго столбца рисуется поверх той, что в первом.
Сейчас попробовал - не помогает.
Если смотреть в дебаггере, то при перерисовке у первых двух саб-айтемов свойство e.Bounds.X равно 0.
А содержимое нулевого столбца, куда бы его ни переместить, всегда рендерится по координате x == 0.
Если смотреть в дебаггере, то при перерисовке у первых двух саб-айтемов свойство e.Bounds.X равно 0.
А содержимое нулевого столбца, куда бы его ни переместить, всегда рендерится по координате x == 0.
Я не очень понял, что ты здесь написал, попробуй переформулировать. Например почему содержимое нулевого столбца не должно рендерится по координате 0 (локальная же по отношению к контролу координата, так и должно быть).
Ещё ты в твоём примере инвалидируешь форму (лишнее действие?).
И не переставляешь сабитемы.
Ну смотри. Есть первый столбец (у которого ID == 0). Перемещаем его, скажем, на 5е место. Свойство DisplayIndex становится равно 4. Но его содержимое всё-равно рендерится там, где он был до перемещения. То есть, у левого края контрола.
Ты сказал - попробуй запросить полную перерисовку. Вот я и запросил
А как их переставлять? Контрол же сам их переставляет при перемещении столбцов.
Тот код, который ты скидывал, я пробовал. Не помогает. Визуально вообще ничего не меняется.