Вы можете изменить шрифт ячейки, где текст протекает следующим образом
private void gvView_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
{
if (e.Column != null && e.Column.Name == bgcStav.Name)
{
float minFontSize = 6;
string text = "teeeeeeeeeeeeeext";
int minWidth = gvView.CalcColumnBestWidth(bgcStav);
SizeF s = e.Appearance.CalcTextSize(e.Graphics, text, minWidth);
if (s.Width >= minWidth)
{
e.Appearance.Font = new Font(e.Appearance.Font.FontFamily, minFontSize);
}
}
}
, но это намного лучше, чтобы обрезать текст, если он прорывает (вы не знаете как долго текст может быть), если вы не хотите использовать WordWrap
private void gvView_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
{
if (e.Column != null && e.Column.Name == bgcStav.Name)
{
string text = e.DisplayText;
string newText = "";
int maxWidth = e.Bounds.Width - 20;
SizeF textSize =e.Graphics.MeasureString(text, e.Appearance.Font);
if (textSize.Width >= maxWidth)
{
string textPom = "";
for (int i = 0; i < text.Length; i++)
{
textPom = text.Substring(0, i) + "...";
textSize = e.Graphics.MeasureString(textPom, e.Appearance.Font);
if (textSize.Width >= maxWidth)
{
newText = text.Substring(0, i - 1) + "...";
break;
}
}
e.DisplayText = newText;
}
}
}
Преимущество этого решения заключается в том, что урожай только что displaied, но в datatable текст остается в его первоначальном виде
Что вы уже пробовали? –
Читая их документацию, не смог найти ничего полезного. Я могу рассчитать высоту и ширину текста вручную. Тем не менее, я спрашиваю, есть ли какой-то способ, предвиденный самим девекспрессом. – user2475983
Я предполагаю, что вы используете Системное рисование где-нибудь? Если да, попробуйте использовать этот https://msdn.microsoft.com/en-us/library/6xe5hazb%28v=vs.110%29.aspx и зацикливать размеры шрифта, чтобы найти тот, который лучше всего подходит для вашей области? –