Здравствуйте, 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 >>