1. Этот код является основной частью обработки слишком длинных строк;
void ItemDataBound (отправитель объекта, DataGridItemEventArgs e)
{
// Получаем строку для отображения
string title = GetTheString();
// Возвращает обновленный текст для указанного столбца.
строка newText = AdjustTextForDisplay (заголовок, 1, сетка);
// Устанавливаем текст, включая всплывающую подсказку, если это необходимо
e.Item.Cells[1].Text = newText;
}
2. Функция AdjustTextForDisplay(string,int,DataGrid) заключается в перехвате строки, которая слишком длинна в соответствии с шириной столбца;
Здесь необходимо отметить, что свойствам Font и Columns[colIndex].ItemStyle.Width DataGrid должны быть присвоены значения. Если значение не присвоено, функция будет использовать системное значение по умолчанию. Если не обработано, функция выдаст исключение.
строка AdjustTextForDisplay (текст строки, int colIndex, сетка DataGrid)
{
// Рассчитываем размеры текста текущим шрифтом
SizeF textSize = MeasureString(текст, сетка.Шрифт);
// Сравниваем размер с шириной столбца
int colWidth = (int) Grid.Columns[colIndex].ItemStyle.Width.Value;
если (textSize.Width > colWidth)
{
// Получаем лишние пиксели
int delta = (int) (textSize.Width - colWidth);
// Вычисляем среднюю ширину символов (приблизительно)
int avgCharWidth = (int) (textSize.Width/text.Length);
// Вычисляем количество символов, которые нужно обрезать, чтобы сохранить фиксированную ширину (приблизительно)
int chrToTrim = (int) (delta/avgCharWidth);
// Получаем правильную подстроку + многоточие
// Обрезаем еще 2 символа (приблизительно), чтобы освободить место для многоточия
строка rawText = text.Substring(0, text.Length-(chrToTrim+2)) + "";
// Формат для добавления всплывающей подсказки
строка fmt = "{1}";
return String.Format(fmt, text, rawText);
}
вернуть текст;
}