Изменение порядка вкладок в TabControl без мерцания - PullRequest
1 голос
/ 17 декабря 2010

В Интернете есть несколько примеров модифицированных TabControls, которые позволяют пользователю изменять порядок вкладок с помощью перетаскивания. Однако все, кажется, используют следующую технику:

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

Последний шаг, однако, заставляет элемент управления мерцать много. Кроме того, когда в элементе управления вкладками много вкладок, он работает довольно медленно.

Можно ли поменять элементы (т.е. поменять местами индексы) в коллекции TabPageCollection без мерцания TabControl?

1 Ответ

2 голосов
/ 17 декабря 2010

Прежде всего, вы не должны очищать коллекцию страниц вкладок, просто удалите вкладку, которую вы перетаскиваете, и вставьте ее в следующую позицию.

Во-вторых, пока вы удаляете и вставляете вкладку, вы можете приостановитьотрисовка TabControl с использованием небольшого взаимодействия, как описано в ответ здесь , путем вызова SuspendDrawing для вашего tabcontrol перед удалением tabpage и ResumeDrawing после того, как вы вставили tab tab в новую позицию.Это должно привести к изменению порядка вкладок без мерцания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...