У меня есть список в SplitterPanel. Я переопределил его методы MeasureItem () и DrawItem ().
В зависимости от Listbox.Width я хочу вернуть всю строку или ее сокращенную версию, например «Dance toni ...».
Я просмотрел SO и нашел два вопроса, которые касаются моей проблемы. Одной из проблем является измерение ширины текста, что я делаю с помощью e.Graphics.MeasureString () в DrawItem ().
Сводка - У меня есть ширина списка и ширина строки в пикселях. Если строка короче ширины списка, я хочу отобразить строку целиком. Однако, если он длиннее, я хотел бы вернуть версию типа «Привет всем ...», которая бы помещалась в пределах ширины списка.
Пока у меня есть:
private string FitText(string s)
{
int width = (TextRenderer.MeasureText(s, titleFont)).Width;
if (width <= mailList.Width)
{
return s;
}
else if (width > mailList.Width)
{
// What goes here?
}
}
Я почти уверен, что это просто математика, но я все еще не могу понять.