如何在 C++CLI 中将简单的静态 RTF 添加到 .NET RichTextBox
How to add simple static RTF to a .NET RichTextBox in C++CLI
我在将一些基本的 RTF 文本添加到我的 .NET C++CLI Windows Forms 应用程序中的 RichTextBox object 时遇到问题。我需要做的就是用两个或三个 "paragraphs" 的静态文本填充我的 RTF 框,其中包含一些粗体文本、一些斜体文本和一些常规文本以及所有固定大小的 Arial 字体。
比如我只想要下面的
Header 1: Lorem ipsum pain sit amet, consectetur adipiscing elite, sed do eiusmod tempor incididunt ut labore et pain magna aliqua. 末尾有些斜体...
(空行)
Header 2: Lorem ipsum pain sit amet, consectetur adipiscing elite, sed do eiusmod tempor incididunt ut labore et pain magna aliqua.还有一些和最小的,谁想锻炼 ullamco
我四处寻找,找到了一些 VB.NET、ASP,甚至 C#(我通常可以将其翻译成 C++CLI)的东西,但我要么变得很奇怪 run-time 关于我的 RTF 的 "format" 的错误,或者所有内容都是粗体的 {
和 }
符号以及其他奇怪的字符出现。
例如,我尝试了 myRichTextBox->Rtf = "{\rtf1\ansi\bHeader\b0: This is a test}"
但得到了 run-time "format" 错误。有些地方建议添加 @
标记,但这至少在 C++CLI 中无法识别。
如果有人可以建议正确的方法来格式化字符串(或我可以传递到我的 RTF 框的 String^ str
)以获得上面显示的 lorem ipsum,我将非常感激!只需要粗体、斜体、一种字体、一种大小、所有静态文本,没有任何编程。
谢谢。
你的字符串有问题,编译器没有像你想的那样解释它:
myRichTextBox->Rtf = "{\rtf1\ansi\bHeader\b0: This is a test}";
例如\r
被解释为马车return。这就是为什么您看到了在 C# 中使用 @
(逐字字符串)的建议:
// This is C# syntax
myRichTextBox.Rtf = @"{\rtf1\ansi\bHeader\b0: This is a test}";
myRichTextBox.Rtf = "{\rtf1\ansi\bHeader\b0: This is a test}";
这两行 C# 代码是等价的。 @
告诉编译器忽略字符串中的所有转义符。
那么,您可以在 C++/CLI 中做什么?
嗯...要么简单地转义反斜杠:
myRichTextBox->Rtf = "{\rtf1\ansi\bHeader\b0: This is a test}";
或者,最好,您可以使用 C# 的逐字字符串的等价物:raw strings:
// foo is an optional delimiter
myRichTextBox->Rtf = LR"foo({\rtf1\ansi\bHeader\b0: This is a test})foo";
我在将一些基本的 RTF 文本添加到我的 .NET C++CLI Windows Forms 应用程序中的 RichTextBox object 时遇到问题。我需要做的就是用两个或三个 "paragraphs" 的静态文本填充我的 RTF 框,其中包含一些粗体文本、一些斜体文本和一些常规文本以及所有固定大小的 Arial 字体。
比如我只想要下面的
Header 1: Lorem ipsum pain sit amet, consectetur adipiscing elite, sed do eiusmod tempor incididunt ut labore et pain magna aliqua. 末尾有些斜体...
(空行)
Header 2: Lorem ipsum pain sit amet, consectetur adipiscing elite, sed do eiusmod tempor incididunt ut labore et pain magna aliqua.还有一些和最小的,谁想锻炼 ullamco
我四处寻找,找到了一些 VB.NET、ASP,甚至 C#(我通常可以将其翻译成 C++CLI)的东西,但我要么变得很奇怪 run-time 关于我的 RTF 的 "format" 的错误,或者所有内容都是粗体的 {
和 }
符号以及其他奇怪的字符出现。
例如,我尝试了 myRichTextBox->Rtf = "{\rtf1\ansi\bHeader\b0: This is a test}"
但得到了 run-time "format" 错误。有些地方建议添加 @
标记,但这至少在 C++CLI 中无法识别。
如果有人可以建议正确的方法来格式化字符串(或我可以传递到我的 RTF 框的 String^ str
)以获得上面显示的 lorem ipsum,我将非常感激!只需要粗体、斜体、一种字体、一种大小、所有静态文本,没有任何编程。
谢谢。
你的字符串有问题,编译器没有像你想的那样解释它:
myRichTextBox->Rtf = "{\rtf1\ansi\bHeader\b0: This is a test}";
例如\r
被解释为马车return。这就是为什么您看到了在 C# 中使用 @
(逐字字符串)的建议:
// This is C# syntax
myRichTextBox.Rtf = @"{\rtf1\ansi\bHeader\b0: This is a test}";
myRichTextBox.Rtf = "{\rtf1\ansi\bHeader\b0: This is a test}";
这两行 C# 代码是等价的。 @
告诉编译器忽略字符串中的所有转义符。
那么,您可以在 C++/CLI 中做什么?
嗯...要么简单地转义反斜杠:
myRichTextBox->Rtf = "{\rtf1\ansi\bHeader\b0: This is a test}";
或者,最好,您可以使用 C# 的逐字字符串的等价物:raw strings:
// foo is an optional delimiter
myRichTextBox->Rtf = LR"foo({\rtf1\ansi\bHeader\b0: This is a test})foo";