Как заполнить поле со списком всех доступных шрифтов в системе?
Заполните ComboBox со списком доступных шрифтов
Ответ 1
Вы можете использовать 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
Ответ 2
Не уверен, зачем нам foreach
здесь.
IList<string> fontNames = FontFamily.Families.Select(f => f.Name).ToList();
Ответ 3
Использовать установленный класс коллекции шрифтов:
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);
}
Ответ 4
Это простой способ сделать это. Он включает в себя два comboboxes 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);
}
Ответ 5
ComboBox1.ItemsSource = new InstalledFontCollection().Families;
и в первый раз выбранный элемент:
private void Combo1_Loaded(object sender, RoutedEventArgs e)
{
ComboBox1.Text = "Tahoma";
}
Ответ 6
Вы можете просто привязать как это:
ItemsSource="{Binding Source={x:Static Fonts.SystemFontFamilies}}"