如何在 C# 中制作字体组合框?

Ale*_*eFe 2 .net c# fonts combobox winforms

我想在 ac# .NET 4.5 Windows Forms 应用程序(注意:不是 WPF)中创建一个组合框,它显示系统上所有安装的 truetype 字体,并且每个字体都使用它所代表的字体进行格式化(“Times”用 Times 格式化, "Arial" 格式为 arial 等)。

这该怎么做?

Fab*_*bio 7

使用ComboBox.DrawItem事件处理程序。

public YourForm()
{
    InitializeComponent();

    ComboBoxFonts.DrawItem += ComboBoxFonts_DrawItem;           
    ComboBoxFonts.DataSource = System.Drawing.FontFamily.Families.ToList();
}

private void ComboBoxFonts_DrawItem(object sender, DrawItemEventArgs e)
{
    var comboBox = (ComboBox)sender;
    var fontFamily = (FontFamily)comboBox.Items[e.Index];
    var font = new Font(fontFamily, comboBox.Font.SizeInPoints);

    e.DrawBackground();
    e.Graphics.DrawString(font.Name, font, Brushes.Black, e.Bounds.X, e.Bounds.Y);
}
Run Code Online (Sandbox Code Playgroud)

使用ComboBox.DrawItem时需要设置ComboBox.DrawMode = DrawMode.OwnerDrawFixed