0

在下面的代码中如果我在字体没有改变 Font之前设置。必须设置在. 这是什么怪癖吗?RtfFontRtfRichTextBox

        [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();
        }
4

2 回答 2

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 中创建的行

谢谢,

我希望这有帮助 :)

于 2012-10-01T22:04:40.083 回答
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 Courier New;}} \viewkind4\uc1\trowd\trgaph10\trleft-10\cellx1140\cellx3740\cellx7340\pard\intbl\lang1033\f0\fs17 \cell 整个图表,从低到高\cell 最近(2002 年 7 月 14 日上午 10:17)\cell\row \pard\fi-10\par }

于 2012-10-01T22:18:39.533 回答