现在有这样的问题:用户在多行文本框里输入了许多的字符(在行结尾没有回车),
我如何把每一行的数据读出来?
我在RichTextBox和TextBox试过好象都没有这个读行的功能。读行的目的是希望在填充Excel报表的时候能够智能的换行。
智能的换行:客户输入:
      结帖方法:点击帖子右上的“管理”链接,进入管理页面,在要给分的回复后的文本框中填写分数,然后输入自己的密码,点击“给分”按钮。客户希望Excel显示如下:
------------------------------------
    结帖方法:点击帖子右上的“管理”
------------------------------------
链接,进入管理页面,在要给分的回复后
------------------------------------
的文本框中填写分数,然后输入自己的密
------------------------------------
码,点击“给分”按钮。
------------------------------------
解释一下:希望在换行的时候考虑到数字、单词、标点的换行规则。谢谢~

解决方案 »

  1.   

    那你设定一个字符串长度,然后用SubString函数一次读入
      

  2.   

    依次读入
    比如SubString(0,10);SubString(10,10);SubString(20,10);
      

  3.   

    你自己定义一个长度
    然后把字符串读到byte中
    按照这个长度截取
    如果用substring的话
    中英文的长度不同可能会显示不正常
      

  4.   

    如果要考虑到你上面的逻辑,可能就比较复杂了
    做的要跟word差不多
    可能得判断字符的asc码
      

  5.   

    同意楼上,用Substring()英文显示的比较短,不能对齐。
      

  6.   

    需要的就是RichTextBox里面的那种换行效果,
    但好象要考虑非常多的问题。
    如果能够直接先写到一个RichTextBox中,
    然后通过readLine的方式读取就好了哦~`
    但好象没有readLine这样的方法哦~`
      

  7.   

    以上说的还有局限哦。如果textbox设置了dock = fill或者top/bottom,改变窗体尺寸,就直接影响了一行的长度,楼上方法都不可取。等楼下想想更好方法。
      

  8.   

    多行文本框都有物理行与逻辑行之分:
    逻辑行按回车或换行符分割,即textbox.Lines[i]属性即可返回某一行
    物理行则是文本框显示的一行,如果文本框不自动换行,则和逻辑行一样,
    但如果自动换行,则可能不一样,例如,因为某一逻辑行太长,可能自动换行了,
    那么一逻辑行可能有多个物理行。去物理行没有直接办法,需要直接调用WIN32
    public static string GetLine(TextBoxBase editControl, int lineIndex)
    {
    int charIndex = (int)SendMessage(editControl.Handle, 0x00BB, lineIndex, 0);
    if (charIndex == -1) return null;
    int lineLen = (int)SendMessage(editControl.Handle, 0x00C1, charIndex, 0);
    if (lineLen < 1 || lineLen > 65535) return null;
    StringBuilder sb = new StringBuilder(" ", lineLen);
    sb[0] = (char)lineLen;
    int copyed = (int)SendMessage(editControl.Handle, 0x00C4, lineIndex, sb);
    if (copyed == 0) return null;
    return sb.ToString(0, copyed);
    } [DllImport("user32.dll")]
    public static extern IntPtr SendMessage(
    IntPtr hWnd,      // handle to destination window
    int Msg,       // message
    int wParam,  // first message parameter
    int lParam   // second message parameter
    ); [DllImport("user32.dll", CharSet=CharSet.Auto)]
    public static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, System.Text.StringBuilder lParam);
      

  9.   

    richtextbox好像有lines之类的
    ------------------------------------
    我的团队:www.51team.com
    欢迎访问,有志者共谋事====CSDN 小助手 V2.0 2005年10月16日发布====
    CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
    界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/10/16/504620.aspx
    下载:http://szlawbook.com/csdnv2/csdnv2.rar为神六喝彩,向所有科技工作者致敬!
    拒绝日货。
      

  10.   

    to lookfeng() :
    谢谢你的指点啊,
    现在折行的问题解决了,
    但是我不知道里面到底有多少行??
      

  11.   

    楼主可以试一试split()方法:
    string[] line=richtextbox1.text.split('\n')
      

  12.   

    public static int GetLineCount(TextBoxBase editControl)
    {
    return (int)SendMessage(editControl.Handle, 0x00BA, 0, 0);
    }