【问题标题】:C# FontFamily not showing new fontsC# FontFamily 不显示新字体
【发布时间】:2014-11-21 22:11:51
【问题描述】:

我注意到,当我们尝试使用 C# 列出字体时,它工作正常;但是,如果我们要在应用程序运行时安装新字体,则调用字体枚举不会返回新字体,直到应用程序重新启动。

代码如下:

public void Populate(bool b)
{
    both = b;
    foreach (FontFamily ff in FontFamily.Families)
    {
        if(ff.IsStyleAvailable(FontStyle.Regular))
            Items.Add(ff.Name);                                             
    }           
}

上述方法的注意事项: Items.Add() 正在向 comboBox 添加项目。

我一定是在这里理解错误。我怎样才能得到上面的代码来重新查询系统的字体,甚至是新字体?

【问题讨论】:

  • 在您的机器上安装新字体后,您是否尝试回忆您的填充方法?因为问题是,在您安装新字体之前,应用程序已经在运行并且填充字体已经完成。制作一些刷新按钮以刷新组合框上的字体列表。

标签: c# windows fonts custom-controls


【解决方案1】:

你试过了吗

using System.Drawing.Text;
InstalledFontCollection fonts = new InstalledFontCollection();
foreach (FontFamily ff in fonts.Families)
{
    if (ff.IsStyleAvailable(FontStyle.Regular))
        Items.Add(ff.Name);
}

【讨论】:

  • 所以像var installed = new InstalledFontCollection(); foreach (FontFamily ff in installed.Families) 这样的东西应该这样做。我会试一试,你的方向。
  • 看起来不太对劲。您没有使用字体变量。
  • LarsTech,我为@Marco 修复了它。只是一个简单的错字。
  • 不幸的是它没有工作;我们打开程序,它运行populate w/o issue,我们通过windows添加了一个新字体(右键单击它->安装)然后再次运行填充,它没有检测到它。我们重新启动了应用程序,它检测到正常。仍然是同样的问题,它就像在应用程序重新启动之前不会检测到。
  • @zackrspv:这是一个旧的discussion,但据此这是操作系统问题。也许他们还没有修复它?
【解决方案2】:
public void Populate(bool b)
{
    both = b;
    InstalledFontCollection fonts = new InstalledFontCollection();
    foreach (FontFamily ff in fonts.Families)
    {
        if (ff.IsStyleAvailable(FontStyle.Regular))
            Items.Add(ff.Name);
    }

}

【讨论】:

  • 嗯,这似乎完全等于我的答案;)
猜你喜欢
  • 1970-01-01
  • 2014-09-26
  • 1970-01-01
  • 2012-04-22
  • 1970-01-01
  • 2021-09-20
  • 2011-08-21
  • 2013-01-06
  • 2012-09-04
相关资源
最近更新 更多