Установка встроенного шрифта в столбце комбинированного списка просмотра данных (Winform) - PullRequest
0 голосов
/ 23 ноября 2018

Я искал все это, но ничего не мог найти.Можно ли установить встроенный шрифт для столбца комбинированного списка datagridview?Я встроил шрифт (инженерные символы), и я могу назначить его на обычный комбинированный список.Вот код для этого:

private void AllocFont(Font f, Control c, float size)
    {
        FontStyle fontStyle = FontStyle.Regular;
        c.Font = new Font(ff, size, fontStyle);
    }

И я использую его так:

private void Inspection_report_builder_Load(object sender, EventArgs e)
    {
        loadFont();
        AllocFont(font, this.comboBox1,10);
    }

Но я не могу выделить шрифт для комбинированного списка просмотра данных.Комбо-бокс уже создан, поэтому мне не нужно создавать его программно.Мне просто нужно назначить шрифт.Есть идеи?Пока что я могу заполнять элементы комбинированного списка (отлично работает). Я новичок в этом, так что, если бы вы могли предоставить пример кода, чтобы я мог его понять, было бы здорово.Это код, который я использую для заполнения списка на тот случай, если вы хотите его увидеть:

private void FillSymbolCombo()
    {
        ConnectionStringSettings conSettings = ConfigurationManager.ConnectionStrings["shopmanagerConnectionString1"];
        MySqlConnection con = new MySqlConnection(conSettings.ToString());
        MySqlCommand cmd = new MySqlCommand(@"select symbols from shopmanager.engineering_symbols;", con);
        MySqlDataReader myReader;
        try
        {
            con.Open();
            myReader = cmd.ExecuteReader();

            while (myReader.Read())
            {
                string sList = myReader.GetString("symbols");
                Column5.Items.Add(sList);
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        con.Close();
    }

1 Ответ

0 голосов
/ 23 ноября 2018

Я нашел ответ.Вот мой код на случай, если у кого-то есть такая же проблема:

private void loadFont()
    {
        byte[] fontArray = ERP1.Properties.Resources.engineering2;
        int dataLenght = ERP1.Properties.Resources.engineering2.Length;

        IntPtr ptrData = Marshal.AllocCoTaskMem(dataLenght);
        Marshal.Copy(fontArray, 0, ptrData, dataLenght);

        uint cFonts = 0;
        AddFontMemResourceEx(ptrData, (uint)fontArray.Length, IntPtr.Zero, ref cFonts);

        PrivateFontCollection pfc = new PrivateFontCollection();
        pfc.AddMemoryFont(ptrData, dataLenght);

        Marshal.FreeCoTaskMem(ptrData);

        ff = pfc.Families[0];
        font = new Font(ff, 9f, FontStyle.Regular);

        // This is where I assign the font to the combobox in the datagridview
        Column5.DefaultCellStyle.Font = font;
    }
...