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

标签 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);
    }

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

最佳答案

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?

关于c# - 在 c# winform 应用程序中使用安装的字体时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11061698/

相关文章:

c# - 将字符串 csv 转换为对象列表

.net - 通过非泛型 IDictionary 枚举时,无法将泛型字典项转换为 DictionaryEntry

c# - 元素内容显示在设计时而不是运行时

c# - 使用 azure 表存储进行分页(升序)

c# - 在 FromBody 中接收一个 PostAsync 作为参数

时间:2019-03-17 标签:c#tooltiphelp

C#:使用不同的键同时移动两个矩形

c# - 将字段从一个 Windows 窗体传递到另一个 Windows 窗体时,哪种技术更好?

c# - Form.DesktopBounds.Width 似乎偏离了 10 个像素。如何确定正确的表格宽度?

visual-studio-2008 - 在 Windows 窗体设计器中将控件与窗体的中心对齐