@crescent

C#: Кастомная перерисовка элементов списка windows form: ListBox?

Возникает неприятная ошибка с отображением элементов ListBox
В моем ListBox находится 60 элеметов, так как их много то ListBox имеет скролл. Но при скроле вниз данныек эелементы не виды: вместо них пустые строки (смотри картинку)

8cfdbf14271a469fafbdf7644c8c42c3.png

Вот мой код:
markersListBox.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
          markersListBox.DrawItem += markersListBox_DrawItem;


private void markersListBox_DrawItem(object sender, DrawItemEventArgs e)
        {
        
            // https://msdn.microsoft.com/ru-ru/library/system.windows.forms.listbox.drawmode(v=vs.110).aspx

            e.DrawBackground();

            var myBrush = Brushes.Black;

            var mk = markersListBox.Items[e.Index] as MarkerForListView;

            // Если у данного маркера заданы все значения, то окрашиваем его представление
            myBrush = mk.BrosokModel.CheckValuesAreSet() ? Brushes.Black : Brushes.Yellow;

            var predictableSize = e.Graphics.MeasureString(mk.ToString(), e.Font);

            var predictableHeight = (int)predictableSize.Height;

            var bounds = new Rectangle(e.Bounds.X, predictableHeight * e.Index, e.Bounds.Width, predictableHeight);


            e.Graphics.DrawString(markersListBox.Items[e.Index].ToString(), e.Font, myBrush, bounds,
                StringFormat.GenericDefault);

            e.DrawFocusRectangle();
        }
  • Вопрос задан
  • 454 просмотра
Пригласить эксперта
Ответы на вопрос 1
@kvasek
К сожалению с этим я вам не помогу, лучше посмотрите в сторону WPF, работа с ui элементами будет только в радость.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы