我有DataGridView
我用作2D阵列的图形。
我的问题是我无法弄清楚如何或者是否可能自动将单元格中的文本缩放到单元格的大小。
我发现这个SO answer显示了如何更改单元格本身的字体,但如果我采用这种方法,我必须计算文本的正确字体大小以手动适合单元格。这是不值得的。
我不得不假设DataGridView中有一个设置让它自动缩放单元格字体大小?我似乎找不到它。
答案 0 :(得分:1)
据我所知,Windows窗体中不存在自动缩放。
顺便说一下,这可以帮到你:
representation = somePacket.show()
print representation # will print nothing
要选择使用哪种测量字符串方法,请参阅以下链接:
我还建议您使用private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if ((e.PaintParts & DataGridViewPaintParts.ContentForeground) != 0 && e.FormattedValue != null && e.FormattedValue.ToString().Length > 0
&& e.RowIndex >= 0 && e.ColumnIndex >= 0)
{
var cellText = e.FormattedValue.ToString();
for (var fontSize = 8; fontSize <= 72; fontSize++)
{
var font = new Font(e.CellStyle.Font.FontFamily, fontSize, e.CellStyle.Font.Style);
var textSize = TextRenderer.MeasureText(cellText, font);
//var textSize = e.Graphics.MeasureString(cellText, font);
if (textSize.Width > e.CellBounds.Width || textSize.Height > e.CellBounds.Height)
{
font = new Font(e.CellStyle.Font.FontFamily, fontSize - 1, e.CellStyle.Font.Style);
e.CellStyle.Font = font;
e.Paint(e.ClipBounds, e.PaintParts);
e.Handled = true;
break;
}
}
}
字典对其进行优化,以避免创建多个Font
实例。