在下面的代码中,如果我在Font
之前设置Rtf
,则字体不会更改。必须在Font
之后设置Rtf
。这是RichTextBox
的一些怪癖吗?
[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();
}
答案 0 :(得分: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 :(得分: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" +
@"}";
另请注意,我也从rtf文本中删除了\fs20
,这是使用更大的字体。
设置RichTextBox控件的RTF属性后,将重写自己:
{\ rtf1 \ ansi \ deff0 {\ fonttbl {\ f0 \ fnil \ fcharset0 Courier New;}} \ viewkind4 \ uc1 \ trowd \ trgaph10 \ trleft-10 \ cellx1140 \ cellx3740 \ cellx7340 \ pard \ intbl \ lang1033 \ f0 \ fs17 \ cell整个图表,从低到高\单元格最近一次(7/14/2002 10:17 AM) )\细胞\排 \ PARD \ FI-10 \帕 }