如何使用(anyword +'་')创建一个跟随字符,然后使用c#在WinForm中创建下一个新行?

时间:2014-09-20 06:44:49

标签: c# winforms richtextbox

如何使用自定义字符创建自定义自动换行。即。我想使用.(dot)字符而不是来包装文本。

我正在使用c#WinForm在richTextBox上进行自动换行项目,因此我需要一起使用(anyword +'་')进行wordwrapping,然后创建下一个新行,因为我的问题是在每个自动换行之后'་'即将开始/开始新行,如下例所示,'་'应该来到每个结束行

假设我已经给出了原始字符串:     རྒྱ་གར་ཚོང་པའི་ལྷན་ཚོགས་དངོས་སུ 一旦我使用了wordwrap概念,它就像这样      རྒྱ་རྒྱ་གར་ཚོང་//我们假设这是第一行

་ལྷན་ཚོགས་དངོས་སུ//this is second line and second line start with '་' so ending line should stay (anyword+'་')  before break the line and it should happen for linewise.

所以为了避免这个问题,我想到了"跟随角色"的概念。经过如此多的谷歌搜索和浏览,我发现以下线程,我在寻找什么,但遗憾的是他们正在使用不同的工具和平台。我尝试了很多使用这些概念并使用C#(WinForm)实现我的项目,但无法工作。因此,请与我分享您的主题并帮助我使用c#(WinForm)完成我的项目。你的帮助意味着我很多。

https://www.youtube.com/watch?v=uTajI2lWwgE http://www.c-sharpcorner.com/UploadFile/72d20e/canvas-text-wrapping-using-html-5/
谢谢!

1 个答案:

答案 0 :(得分:1)

如果您希望在每.后添加新行,则需要将anyword. anyword替换为anyword.\r\nanyword \r\n,其中M.\r\nB.\r\nB.\r\nS.\r\n是新行的序列。但是,如果你写M.B.B.S,它可能会产生一些问题。然后它可能像string str = "This is the simple text. Hello world".Replace(". ", ".\r\n");

This is the simple text.
Hello world.

输出:

int tmpIndex = 0;
int startIndex = 0;
int lastIndex = 0;
string sChar = ".";
string strText = richTextBox1.Text;

Graphics g = this.CreateGraphics();
StringBuilder sb = new StringBuilder();

while (tmpIndex > -1)
{
    lastIndex = tmpIndex;
    tmpIndex = strText.IndexOf(sChar, tmpIndex + 1);
    if (tmpIndex < 0)
        tmpIndex = strText.Length - 1;

    if (g.MeasureString(strText.Substring(startIndex, tmpIndex - startIndex), richTextBox1.Font).Width > richTextBox1.Width || tmpIndex == (strText.Length-1))
    {
        sb.AppendLine(strText.Substring(startIndex, lastIndex - startIndex));
        startIndex = lastIndex;                    
        if (tmpIndex == (strText.Length - 1))
            break;
        tmpIndex = lastIndex;
    }
}
richTextBox1.Text = sb.ToString();

<强>编辑:

{{1}}