C# 中richitextBoX中显示的文本怎么换行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 中richitextBoX中显示的文本怎么换行相关的知识,希望对你有一定的参考价值。

我有两个数组分别为X和Y,我想每输出一个X和Y后就进行换行,但是用\n怎么不行呢?
我写的是richtextBox。Text+=Y[i]+X[i]+\n;非常感谢

只有\n在windows下是不能够换行的,两种方法:
1、在要换行处加入"\r\n"。
2、在要换行处+ Environment.NewLine +,等同于"\r\n"追问

非常感谢您全面的回答

参考技术A 两种方式: 通过系统静态变量 Environment.NewLine;
代码: \r\n追问

很感谢您的帮助!

参考技术B Text+=Y[i]+X[i]+Environment.NewLine;追问

非常感谢,成了!

如何在 Blazor 项目中使用 C# 绑定制作 HTML 文本多行?

【中文标题】如何在 Blazor 项目中使用 C# 绑定制作 HTML 文本多行?【英文标题】:How to make a HTML text multiline using a C# bind in a blazor project? 【发布时间】:2020-02-17 21:39:52 【问题描述】:

我有一个带有客户端 Razor 页面的 Blazor 项目。在该页面上,我想显示多行文本,例如:

找不到系列错误信息

但文本是在使用@bind 的 C# 字符串中找到的。

我尝试使用普通的\n 来换行。它确实认为它是命令,但它在文本中放置了一个“空格”而不是换行。

我也试过在文本中写<br />,但它只是在文本中写了那个。

我的剃须刀页面:

<p>@resultString</p>

@code 
    string resultString = "Series not found \nError message";

使用代码 sn-p 中的输入,我希望得到以下输出:

找不到系列错误信息

【问题讨论】:

&lt;pre&gt;@resultString&lt;/pre&gt; 【参考方案1】:

我认为渲染原始 html 标记不是一个好主意,因为它在大多数情况下都非常危险。

至于你的问题,我建议你添加一行CSS代码来显示换行:

style="white-space: pre-line" >@resultString

@代码 string resultString = "找不到系列\n错误信息";

演示

【讨论】:

或使用white-space: pre-wrap; 保持间距。【参考方案2】:

我能想到的唯一方法是使用 Razor 模板。 \r\n、Envirnoment.Newline 和其他任何东西都不能让编译器让步。

这是使用 Razor 模板的有效解决方案:

<p>@resultString</p>

@code 
    RenderFragment resultString =  @<p>Series not found <br />Error message</p>;


更新: 你也可以这样用:

MarkupString  resultString = (MarkupString) $"Series not found <br />Error message"; 

更新 2: 来自文件:

呈现原始 HTML Blazor 通常使用 DOM 文本节点呈现字符串,这意味着它们可能包含的任何标记都将被忽略 并被视为文字文本。这个新功能可以让你渲染特殊 MarkupString 值将被解析为 HTML 或 SVG,然后 插入到 DOM 中。

警告:渲染从任何不受信任的来源构建的原始 HTML 是 重大安全隐患!

使用 MarkupString 类型添加静态 HTML 内容块。

@((MarkupString)myMarkup)

@functions 
    string myMarkup = "<p class='markup'>This is a <em>markup string</em>.</p>";

希望这会有所帮助...

【讨论】:

谢谢!完美运行。【参考方案3】:

你总是可以选择简单的方法:拆分和循环

@foreach (var line in resultString.Split(new[]  '\r', '\n' , StringSplitOptions.RemoveEmptyEntries))

        <p>@line</p>
 

@code 

    public string resultString  => "Series not found \nError message";

【讨论】:

谢谢!这对我有用!【参考方案4】:

使用MarkupString 时,确保行正确编码很重要。确保这一点的一种简单方法是使用以下辅助方法:

public static class HtmlHelper

   public static MarkupString RenderMultiline(string textWithLineBreaks)
    
        var encodedLines = (textWithLineBreaks ?? string.Empty)
            .Split(new char[]  '\r', '\n' )
            .Select(line => HttpUtility.HtmlEncode(line))
            .ToArray();

        return (MarkupString)string.Join("<br />", encodedLines);
    

用法:

<div>
    @HtmlHelper.RenderMultiline($"This text goes over\nmultiple lines\neven with userinput");
</div>

【讨论】:

以上是关于C# 中richitextBoX中显示的文本怎么换行的主要内容,如果未能解决你的问题,请参考以下文章

c#文本框如何换行

asp.net怎么限制文本框输入的类型c#

c#中messagebox.show如何实现显示信息换行!求大虾们 速回 急用!!

C#在WinForm中怎样让多行TEXTBOX的换行

listview文本换行,怎么办

Textarea 中回车换行,提交数据后,在网页中显示的是没换行的样子,求解