1、最近开发一个阿拉伯语的项目,要把richtextbox中的文本按行提取出来并反序输出(注意是按物理行,不是按虚拟行)代码如下:
RichTextBox nrtb= new richTextBox();
 foreach (string str in nrtb.Lines)
            {
                char[] strnew = str.ToArray();
                Array.Reverse(strnew);
                MessageBox.Show(new string(strnew));
             }
却发现,当自动换行启用时,即使richTextbox里显示有N行,但实际上只有一个换行符即
1111111111111
1111111111111
1111111111111
11
取出后,只取得了111111111111111111111111111111111111
求助如何真正按行将内容分离!!???
2、如何可以设置richtextbox的阅读方向为从右向左, 即像计算器一样:在从左像右读“中华人”,从右向左读:“人华中”
!!!

解决方案 »

  1.   

    行的容量 目前还不好固定,因为最终的字体大小是可调的,另外,richTextBox大小也是随分辨率可变的。
    其实,主要的目的是想要把richtextbox 当前行进行逆转排序,
    即当前行为123456   转换后为654321,
    想到的办法开始是想把winform的阅读方向设成从右向左,righttoleft和righttoleftlayout
    但FORM方向变了,但richtextbox的方向没变
      

  2.   

    反转,排序就Sort一下吧
    private string Reverse(string original)
     {
     char[] arr = original.ToCharArray();
     Array.Reverse(arr);
     return new string(arr);
     }  
      

  3.   

    我也是这么做的,呵呵
    关键的问题是
    我想实现 richtextbox中 123456-》654321,如果不跨自然行的话,这样做是可以的
    但如果是这样:
    12345
    67890   转换后就成了 0987654321
    也就是说,在richtextbox中,因为没有了“硬分行”所以得出的lines是一个整体,
    具体例子:
    我们都是有思想有
    报负的人              转换后,右对齐应该是:有想思有是都们我
                                                        人的负报
    这就是从右至左读
    但是因为没有硬分行,这句就变成了   有想思有是都们我人的负报所以纠结啊。。
      

  4.   

    这个自动换行用richTextBox1.Lines没办法读取,就是一行  
    除非你想办法在那个自动换行的地方插入"\n"
    才可以使用richTextBox1.Lines[i]
      

  5.   

    那如何才能得到richtextbox的字符数呢?
      

  6.   

    你可以用工作区的宽度RichTextBox1.ClientRectangle.Width/字符的占位宽度  得到字符数。
      

  7.   

    现在存在的问题是,不仅仅是要输入,还要读取TXT或RTF的文件,读取后,要将字串逐行(物理行)取反,取反后,因为RTF是带格式的所以字体不好确定!!