在c#winform应用程序中使用已安装字体时出现问题

时间:2012-06-16 07:43:27

标签: c# .net winforms fonts

在我的应用程序中,我希望用户从用户系统中可用的字体列表中选择一种字体,并将该字体设置为richtextbox。 我试过::

    System.Drawing.Text.InstalledFontCollection fonts = new System.Drawing.Text.InstalledFontCollection();
        foreach (FontFamily family in fonts.Families)
        {
           comboBox1.Items.Add(family.Name);
        }

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        richTextBox1.Font = new Font(comboBox1.SelectedText, 14);
    }

但它会更改文本的默认行为。例如:文本包含粗体和斜体的标题。使用上面的代码设置字体会转换常规形式的文本。 我的问题是,可能像以前一样保持文本的行为,而不是通过粗体文本和斜体字斜体保持粗体文本以常规形式更改完整文本。

2 个答案:

答案 0 :(得分:0)

可以选择使用字体原型初始化字体。尝试使用micrsoftsansserif将字体原型定义为具有所需大小和样式的字体,然后将新字体作为第二个参数传递。 msdn拥有所有信息。

答案 1 :(得分:0)

SelectedText用于ComboBox文本属性的突出显示部分。可能不是你想要的:

richTextBox1.Font = new Font(comboBox1.Text, 14);

此外,如果您只想让RichTextBox的突出显示部分具有新字体:

richTextBox1.SelectionFont = new Font(comboBox1.Text, 14);

如果突出显示的文本的任何部分混合使用粗体和斜体以及不同的大小等,则RichTextBox不能很好地保留这些属性。见How do I maintain RichText formatting (bold/italic/etc) when changing any one element?