■No34261に返信(koheiさんの記事) > ちょっと長いけど、その時のRTF文字列付けておきます。 『{』の個数が、『}』の個数より多いような…? > VisualStudio2019のVBで、リッチテキストボックスを使ったプログラムを作ってるのですが、 ターゲットとしている .NET Framework バージョンと 実行環境の OS バージョンは何でしょうか? > VBのリッチテキストボックスは、RTFの全ての書式が使えるわけではなく、 > 何か制限(機能の限定)があるのでしょうか? RTF 仕様について学ばれているようなので、既にご存知とは思いますが、 RTF には幾つかのバージョンがあり、バージョン間で機能面に差異があります。 https://ja.wikipedia.org/wiki/Rich_Text_Format#%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AE%E5%B1%A5%E6%AD%B4 また、それを扱う Rich Edit Control にも複数のバージョンがあります。 https://blogs.msdn.microsoft.com/murrays/2006/10/13/richedit-versions/ どのバージョンの DLL が利用されるのかは、使用している .NET Framework バージョンによって異なっていますが、元々は いわゆる RichEd20.DLL がロード対象であったと記憶しています。 リリース当初は RichEdit 3.0 相当(ただし Win98 では 2.0 相当)かと。 しかし実際に動作させてみると、たとえば .NET Framework の 3.5 と 4.7.2 とでは、RTF の解釈に差が生じることがあります。 これは 4.6 において、RichEd20.DLL よりも MsftEdit.DLL を 優先利用するための機能が用意されたためです。しかし互換性上の理由から 既定では RichEd20.DLL が引き続き利用されるようになっていました。 ただし 4.7 では、MsftEdit.DLL が優先利用されるよう変更されました。 4.6 以降では、この DLL バージョンのためのオプトアウトスイッチとして DoNotLoadLatestRichEditControl が設けられました。 動作を切り替えるためには、app.config 上に下記の項目を追加できます。 <configuration> <runtime> <!-- <AppContextSwitchOverrides value="Switch.System.Windows.Forms.DoNotLoadLatestRichEditControl=false"/> <AppContextSwitchOverrides value="Switch.System.Windows.Forms.DoNotLoadLatestRichEditControl=true"/> --> </runtime> </configuration> ※上記は WinForms の場合の話です。WPF その他については未調査です。