Выделенный пункт ListBox должен закрашиваться синим, а остальные белым. Но вместо этого синим закрашиваются все пункты, по которым я кликнул или водил мышью с зажатой кнопкой.
private static void DrawFocusRectangle(Graphics graphics, Rectangle rectangle, Color color, bool highContrast) {
if (graphics == null) {
throw new ArgumentNullException("graphics");
}
rectangle.Width--;
rectangle.Height--;
graphics.DrawRectangle(GetFocusPen(color,
// we want the corner to be penned
// see GetFocusPen for more explanation
(rectangle.X + rectangle.Y) % 2 == 1,
highContrast),
rectangle);
}
кстати, а вообще как его уменьшение поможет перерисоваться соседнему элементу-то?
Проблема же в том, что предыдущий активный элемент остаётся отрисованным так, как буд-то он ещё активен, хотя уже нет.
Добавлено:
А, я понял Вы имеете ввиду, что расстояние между строчек слишком маленькое и они просто накладываются друг на друга! Я просто гений!
Вам надо яснее излагать мысли.
Но даже если так, то предыдущая активная строка всё равно должна перерисоваться. А как она это сделает?
Да, точно! Предыдущая активная строка перерисовывается автоматически. На WinAPI, вроде, так же сделано.