2012-06-16 38 views
3

在我的應用程序中,我希望用戶從用戶系統中可用字體列表中選擇一種字體,並將該字體設置爲richtextbox。 我試着::在c#winform應用程序中使用已安裝字體的問題

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

,但它改變了文本的默認行爲。例如:文本包括粗體和斜體的標題。使用上面的代碼設置字體會以常規形式轉換文本。 我的問題是,可能保持文本的行爲像以前一樣,而不是通過將粗體文本保留爲粗體和斜體斜體來更改常規形式的完整文本。

回答

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?

0

有一個選項可以用字體原型初始化字體。嘗試將字體原型定義爲具有所需大小和樣式的micrsoftsansserif字體,然後將新字體作爲第二個參數傳遞。 MSDN有所有的信息。