Почему свойство DoubleBuffered принимает значение по умолчанию ко лжи на DataGridView и почему это защищено?

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

15
задан Community 23 May 2017 в 12:02
поделиться

3 ответа

Это защищено, потому что DGV наследовал свойство от Управления. И Управление. DoubleBuffered защищен. Который имеет смысл, потому что каждое полученное управление должно решить, чтобы себя включил это. И не имеет смысла для пользователя управления произвольно включать или выключать его. Разработчики DGV, решенные для прочь.

Одна причина они, возможно, решили, что это - то, что двойная буферизация на самом деле делает рисование медленнее. Дополнительный шаг для рендеринга буферного битового массива стоит времени. Это просто выглядит быстрее к человеческому глазу, Вы наблюдаете битовый массив, внезапно появляющийся. Вы не видите время, которое требуется для вовлечения битового массива. Если другие средства управления не должны быть нарисованы, и они получают свою очередь после DGV, затем это довольно видимо.

то, Что Вы видите, является формой, оттягиваемой сначала с дырами, куда средства управления идут. Те дыры имеют белый фон. Черный, когда Вы используете свойство TransparencyKey или Opacity. Каждое управление затем получает событие Paint, и дыры заполнены один за другим. Тот эффект воспринят как мерцание также пользователем, хотя это - другой вид мерцания от того, которое решает DoubleBuffered. Особенно примечательно, когда фон является черным.

, Что необходимо для решения этой проблемы, то, что вся форма, со всеми ее средствами управления, с двойной буферизацией. Это не доступно в Windows Forms. Однако Windows XP и позже на самом деле поддерживает это. Проверьте этот поток , чтобы видеть, как это сделано. Остерегайтесь этого, это может иметь побочные эффекты, как зарегистрировано в тот поток.

19
ответ дан 1 December 2019 в 00:41
поделиться

Двойная буферизация по определению использует два буфера и дважды память для рендеринга представления управления в. Так, существует некоторый недостаток там, однако, с объемом памяти, Вы входите в ПК теперь, не, многие люди, вероятно, заметили бы жертву.

Никакая идея, почему его защищенный. Возможно, функция не была доступна в ранней версии управления, и когда это было представлено, разработчики не хотели изменять открытый интерфейс управления. Или возможно они полагали, что это было расширенной функцией, и хотели ограничить количество методов, которые кто-то плохо знакомый с управлением будет иметь к grok, чтобы смочь заставить его сделать что-то полезное.

5
ответ дан 1 December 2019 в 00:41
поделиться

Наследование не требуется для включения двойной буферизации в datagridview . Вы можете сделать это с помощью отражения в существующем datagridview.

4
ответ дан 1 December 2019 в 00:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: