Этот вопрос можно считать продолжением -доМерцание в списке с помощью ownerdraw и virtualmode.
У меня есть элемент управления ListView
в Virtual mode
, и я пытаюсь выполнить пользовательское рисование. Рендеринг элемента выполняется с помощью следующего переопределения метода:
protected override void OnDrawItem(DrawListViewItemEventArgs eventArgs)
Как упоминалось в упомянутом вопросе, пользовательское рисование вводит мерцание при наведении курсора мыши на события. Отладчик сообщает мне, что это происходит из-за чрезмерного количества пользовательских событий отрисовки, которые запускаются.
Теперь -принятый ответ на упомянутый вопрос сообщает нам:
Это ошибка в.NET ListView, и вы не можете обойти ее с помощью двойная буферизация.
Итак, насколько надежна эта информация? Это действительно ошибка ? Или, может быть, мы просто пытаемся отрезать часть сообщений и надеемся, что это не изменит видимого поведения?
Верно ли, что если у меня есть процедура рисования моего владельца для ListView
в Virtual Mode,
, я могу подавить эти события Custom Draw
и выполнить только свое рисование в WM_PAINT
или, может быть, это неправильно для некоторых случаев ?
Каковы предварительные условия для того, чтобы элемент управления System.Windows.Forms
мог выполнять всю рисование в WM_PAINT
без изменения его начального поведения?