Добавление встроенного шрифта в datagridviewC#

Место общения программистов C#
Ответить
Anonymous
 Добавление встроенного шрифта в datagridview

Сообщение Anonymous »

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

Код: Выделить всё

fontCollection.AddFontFile("./Resources/Circulitos.ttf");
Но потом я хотел попробовать использовать встроенный файл, и шрифт не отображается правильно в datagridview, однако он отображается правильно в метке, которая у меня есть для тестирования.
У меня есть такой код:
program.cs

Код: Выделить всё

internal static class Program
{
/// 
///  The main entry point for the application.
/// 

static private List
 _fontCollections;

[STAThread]
static void Main()
{
// To customize application configuration such as set high DPI settings or default font,
// see https://aka.ms/applicationconfiguration.
ApplicationConfiguration.Initialize();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(true);
Application.ApplicationExit += delegate {
if (_fontCollections != null)
{
foreach (var fc in _fontCollections) if (fc != null) fc.Dispose();
_fontCollections = null;
}
};
Application.Run(new Main());
}
static public Font GetCustomFont(byte[] fontData, float size, FontStyle style)
{
if (_fontCollections == null) _fontCollections = new List();
PrivateFontCollection fontCol = new PrivateFontCollection();
IntPtr fontPtr = Marshal.AllocCoTaskMem(fontData.Length);
Marshal.Copy(fontData, 0, fontPtr, fontData.Length);
fontCol.AddMemoryFont(fontPtr, fontData.Length);
Marshal.FreeCoTaskMem(fontPtr);
_fontCollections.Add(fontCol);
return new Font(fontCol.Families[0], size, style);
}
}
Main.cs

Код: Выделить всё

public partial class Main : Form
{
private PrivateFontCollection fontCollection;
private Font gf;

public Main()
{
gf = Program.GetCustomFont(Properties.Resources.Circulitos, 10, FontStyle.Regular);
InitializeComponent();
}
private void circulitos(int index, bool update)
{
dataGridView1.Columns[1].HeaderCell.Style.BackColor = Color.Green;
dataGridView1.DefaultCellStyle.Font = gf;
dataGridView1.ColumnHeadersDefaultCellStyle.Font = gf;
dataGridView1.RowHeadersDefaultCellStyle.Font = gf;
dataGridView1.EnableHeadersVisualStyles = false;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
DataGridViewCell cell = row.Cells[1];
try
{
cell.Style.Font = gf;
}
catch
{
MessageBox.Show("Error fontCollection");
}
label5.Font = gf;
}
dataGridView1.Refresh();
dataGridView1.Invalidate();
}
}
Что я могу сделать, чтобы шрифт применялся к ячейкам datagridview, а не только к меткам?
Спасибо, что уделили время

Подробнее здесь: https://stackoverflow.com/questions/787 ... tagridview
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»