ListBox не правильно перерисовывается

Здравствуйте. Написал вот такой код:


        private void LbChannelList_DrawItem(object sender, DrawItemEventArgs e)
        {
            e.Graphics.FillRectangle(lbChannelList.SelectedIndex == e.Index ? Brushes.Blue : Brushes.White, e.Bounds);
            e.Graphics.DrawString(lbChannelList.Items[e.Index].ToString() +  " | " +  watchArr[e.Index].copiesCount.ToString(),
                lbChannelList.Font, lbChannelList.SelectedIndex == e.Index ? Brushes.White : Brushes.Black, 
                new PointF(e.Bounds.X, e.Bounds.Y));
        }

Выделенный пункт ListBox должен закрашиваться синим, а остальные белым. Но вместо этого синим закрашиваются все пункты, по которым я кликнул или водил мышью с зажатой кнопкой.

Всё, дошло. Надо вот как:

        private void LbChannelList_DrawItem(object sender, DrawItemEventArgs e)
        {
            e.Graphics.FillRectangle((e.State & DrawItemState.Selected) == DrawItemState.Selected ? Brushes.Blue : Brushes.White, e.Bounds);
            e.Graphics.DrawString(lbChannelList.Items[e.Index].ToString() +
                " | " + watchArr[e.Index].copiesCount.ToString(),
                lbChannelList.Font, (e.State & DrawItemState.Selected) == DrawItemState.Selected ? Brushes.White : Brushes.Black,
                new PointF(e.Bounds.X, e.Bounds.Y));
        }

Но лучше так:

        private void LbChannelList_DrawItem(object sender, DrawItemEventArgs e)
        {
            bool isSelected = (e.State & DrawItemState.Selected) == DrawItemState.Selected;
            e.Graphics.FillRectangle(isSelected ? Brushes.Blue : Brushes.White, e.Bounds);
            e.Graphics.DrawString(lbChannelList.Items[e.Index].ToString() + " | " + watchArr[e.Index].copiesCount.ToString(),
                lbChannelList.Font, isSelected ? Brushes.White : Brushes.Black,
                new PointF(e.Bounds.X, e.Bounds.Y));
        }