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 が Font/Colors/Spacing などを担当していると思います...挿入時にフォントは既に変更されています

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 AM)\cell\row \pard\fi-10\par }

于 2012-10-01T22:18:39.533 に答える