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

标签 c# .net winforms fonts combobox

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

如何做到这一点?

最佳答案

使用 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);
}

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

关于c# - 如何在 C# 中制作字体组合框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46037189/

相关文章:

c# - 为什么类属性需要注释

c# - 更改MsmqIntegrationBinding的消息编码

.net - 使用 Visual Studio 2010 Web Config Transformation 删除 XML 注释

c# - 表中列值的总和 - Rdlc 报告

visual-studio - WinForm 部分类

C# Selenium - 无法启动 Tor

c# - 纯托管 SQLite NET 包装器

c# - codeDom中的switch语句(跳表样式)

c# - 托管应用程序的 CoInitializeSecurity,创建垫片?

c# - WinForms Designer 和 TableLayoutPanel SmartTag 自定义