Re[4]: Многострочный ListBox в .Net
От: mbrodin Украина  
Дата: 22.07.04 16:18
Оценка:
Здравствуйте, AndrewVK, Вы писали:

Так тоже не получается, потому что определение размеров каждого конкретного Item-a происходит при инициализации ListBox, а попытки менять ItemHeight по событию OnMeasureItem ни к чему не приводят

        protected override void OnDrawItem(DrawItemEventArgs e)
        {
            if (e.Index < 0 || Items.Count == 0) return;
                        
            if (wordWrap)
            {                
                string item = Items[e.Index].ToString();                
                e.DrawBackground();
                SolidBrush brush = new SolidBrush(ForeColor);
                e.Graphics.DrawString(item,Font,brush,e.Bounds);
            }
            else
            {
                base.OnDrawItem (e);
            }
        }

        protected override void OnMeasureItem(MeasureItemEventArgs e)
        {
            if (e.Index < 0 || Items.Count == 0) return;

            if (wordWrap)
            {
                string item = Items[e.Index].ToString();
                SizeF size = e.Graphics.MeasureString(item,Font,Width);
                e.ItemHeight = Convert.ToInt32(size.Height);
            }
            else
            {
                base.OnMeasureItem (e);
            }
        }



AVK>Здравствуйте, mbrodin, Вы писали:


M>>Все это конечно интересно, но он большую строку обрезает и ставит три точки, а надо чтобы переносил на следующую строчку...


AVK>Если нужны переносы и строки разной высоты то только ListBox и OwnerDraw.
... << RSDN@Home 1.1.4 beta 2 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.