如果文本不适合单元格,请调整字体大小 (XRTable)
本文关键字:XRTable 字体 调整 不适合 文本 单元格 如果 | 更新日期: 2023-09-27 18:30:54
如果单元格内容不适合,如何调整其大小(字体大小)。我不想自动换行或更改单元格的大小,因为表单必须适合单个页面。文本可能具有不同的长度。它可能包含空格,但不必包含空格。
@edit
我犯了一个错误。我的意思是控制不是XtraGrid
而是XRTable
。
我建议你先看看外观。有多种方法可以自定义单个行和单元格的外观。
如果这些选项没有帮助,则可以根据需要使用"自定义绘图"功能手动绘制单元格内容。例如,可以使用 GridView.CustomDrawCell 事件来检查单元格的内容是否超出单元格的边界,并相应地更新此单元格的字体。
相关示例:如何:根据单元格值自定义绘制单元格
您可以更改文本排列的单元格的字体,如下所示
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);
}
}
}
但是,当您不想使用自动换行时,如果文本溢出(您不知道文本可以有多长),则修剪文本会更好
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;
}
}
}
这种解决方案的优点是,裁剪的内容只有被破坏,但在数据表中的文本保持其原始形式