2012-10-01 64 views
0

在下面的代碼中,如果我在Rtf之前設置了Font,則字體不會更改。 Font必須在Rtf之後設置。這是RichTextBox的一些怪癖嗎?爲什麼字體必須在RTF後設置?

 [TestMethod] 
     public void FontProblemTest() 
     { 
      Form f = new Form(); 
      RichTextBox brtb = new RichTextBox(); 
      brtb.Width = 800; 
      brtb.Height = 500; 
      brtb.Font = new System.Drawing.Font(new System.Drawing.FontFamily("Courier New"), 8.25F, System.Drawing.FontStyle.Regular);//font set here has no effect 
      brtb.Rtf = @"{\rtf1\ansi\deff0{\fonttbl{\f0\fnil Arial;}{\f1\fnil\fcharset0 Courier New;}}" + 
@"{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\trowd\trgaph10\trleft-10\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3" + 
@"\cellx1140\cellx3740\cellx7340\pard\intbl\lang1033\f0\fs20\cell Whole Chart, Low to High\cell Most Recent (7/14/2002 10:17 AM)\cell\row" + 
@"}"; 
      //brtb.Font = new System.Drawing.Font(new System.Drawing.FontFamily("Courier New"), 8.25F, System.Drawing.FontStyle.Regular);//font must be set after rtf. 
      f.Controls.Add(brtb); 
      f.Width = 1000; 
      f.Height = 800; 
      f.ShowDialog(); 
     } 

回答

1

我認爲RTF是什麼是負責字體/顏色/間距等...字體已經當您插入

brtb.Font = new System.Drawing.Font(new System.Drawing.FontFamily("Courier New"), 8.25F, System.Drawing.FontStyle.Regular);//font set here has no effect 

改變,但因爲你插入

brtb.Rtf = @"{\rtf1\ansi\deff0{\fonttbl{\f0\fnil Arial;}{\f1\fnil\fcharset0 Courier New;}}" + 
@"{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\trowd\trgaph10\trleft-10\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3" + 
@"\cellx1140\cellx3740\cellx7340\pard\intbl\lang1033\f0\fs20\cell Whole Chart, Low to High\cell Most Recent (7/14/2002 10:17 AM)\cell\row" + 
@"}"; 

它只會覆蓋您之前設置的字體。

備註的brtb.Rtf值保存到一個新的.rtf文件將允許您查看您在brtb.Rtf創建

感謝行,

我希望這有助於:)

1

不要在您的RTF字符串中包含字體。您的RichTextBox指定Courier New,但您的RTF代碼會覆蓋Arial。

brtb.Rtf = @"{\rtf1\ansi" + 
@"{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\trowd\trgaph10\trleft-10\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3" + 
@"\cellx1140\cellx3740\cellx7340\pard\intbl\lang1033\f0\cell Whole Chart, Low to High\cell Most Recent (7/14/2002 10:17 AM)\cell\row" + 
@"}"; 

另外請注意,我刪除\fs20從RTF文本爲好,這是使用更大的字體。

一旦您設置RichTextBox控件的RTF屬性,它自己重新寫這個:

{\ RTF1 \ ANSI \ deff0 {\ fonttbl {\ F0 \ fnil \ fcharset0速遞新的;}} \ viewkind4 \ uc1 \ trowd \ trgaph10 \ trleft-10 \ cellx1140 \ cellx3740 \ cellx7340 \ pard \ intbl \ lang1033 \ f0 \ fs17 \ cell整個圖表,從低到高\ cell最近的(7/14/2002 10:17 AM)\ cell \ row \ pard \ fi-10 \ par }

相關問題