2016-02-18 3 views
0

У меня есть DataGridView, который я использую как своего рода графику для 2D-массива.Автоматически изменять размер шрифта в тексте ячейки DataGridView?

enter image description here

Моя проблема заключается в том, что я не могу понять, как, или, если это возможно, чтобы автоматически масштабировать текст в ячейках с размером ячейки.

Я нашел это SO answer, который показывает, как изменить шрифт самой ячейки, хотя, если бы я принял этот подход, мне пришлось бы рассчитать правильный размер шрифта текста, чтобы он соответствовал ячейке вручную. Это просто не стоит усилий.

Я должен был предположить, что в DataGridView есть параметр, чтобы автоматически масштабировать размер шрифта ячейки? Кажется, я не могу найти его.

+0

К сожалению, автоматического автоматического масштабирования в 'DataGridView' не существует. – Bioukh

ответ

1

Насколько я знаю, автоматического автоматического масштабирования в формах Windows не существует.

Кстати, это может помочь вам:

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 словарь, чтобы избежать нескольких Font создание экземпляра.