Заполните ComboBox списком доступных шрифтов - PullRequest
38 голосов
/ 06 августа 2010

Как мне заполнить поле со списком всех доступных шрифтов в системе?

Ответы [ 6 ]

63 голосов
/ 06 августа 2010

Вы можете использовать System.Drawing.FontFamily.Families для получения доступных шрифтов.

List<string> fonts = new List<string>();

foreach (FontFamily font in System.Drawing.FontFamily.Families)
{
    fonts.Add(font.Name);
}

// add the fonts to your ComboBox here
8 голосов
/ 31 августа 2013

Не уверен, зачем нам foreach здесь.

IList<string> fontNames = FontFamily.Families.Select(f => f.Name).ToList();
3 голосов
/ 22 июля 2016

Это простой способ сделать это.Он включает в себя два поля со списком 1 для имени шрифта и один для размера шрифта

 public FontFamily[] Families { get; }


 private void Form1_Load(object sender, EventArgs e)
    {

        foreach (FontFamily oneFontFamily in FontFamily.Families)
        {
            comboBox1.Items.Add(oneFontFamily.Name);
        }

        comboBox1.Text = this.richTextBox1.Font.Name.ToString();
        comboBox2.Text = this.richTextBox1.Font.Size.ToString();

        richTextBox1.Focus();

    }

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
    {

         float size = Convert.ToSingle(((ComboBox)sender).Text);

        richTextBox1.SelectionFont = new Font(richTextBox1.Font.FontFamily, size);
    }
2 голосов
/ 06 августа 2010

Использовать класс установленных шрифтов:

http://msdn.microsoft.com/en-us/library/system.drawing.text.installedfontcollection.aspx

Это альтернативный и эквивалентный подход к ответу от Зака ​​Джонсона.

List<string> fonts = new List<string>();
InstalledFontCollection installedFonts = new InstalledFontCollection();          
foreach (FontFamily font in installedFonts.Families)
{               
    fonts.Add(font.Name);
}
0 голосов
/ 22 мая 2016
ComboBox1.ItemsSource = new InstalledFontCollection().Families;

и впервые выбранный пункт:

private void Combo1_Loaded(object sender, RoutedEventArgs e)
{
    ComboBox1.Text = "Tahoma";
}
0 голосов
/ 24 ноября 2015

Вы можете просто привязать это так:

ItemsSource="{Binding Source={x:Static Fonts.SystemFontFamilies}}"
...