假设我有一个多行 TextBox 一次能显示十行(提供一个垂直滚动条)
用它来显示一个100行的文本
我怎么才能知道 TextBox 中显示的第一行,是我这100行文本中的第几行?不知道我这么说是否明确!

解决方案 »

  1.   

    我的意思就是: 想得到 TextBox 控件显示的文本中 (显示出来的,由于TextBox高度不够,文本多了肯定显示不全) 当它显示到文本中间的某一位置时,我想知道 TextBox 显示的是 文本中的哪几行 
    好像跟我上面说的差不多啊,呵呵,不明确我再描述
      

  2.   

    我没做过这种需求, 但是我有个思路: 获得TextBox的scrollBar的位置, 然后算出对应的行号
    应该是有这个API的
      

  3.   

    对呀,我想也是有API,但是我不知道是哪个API ,  SendMessage能做到吗, 该怎么做啊
      

  4.   

    应该可以根据 SelectionStart 属性 得到当前光标的所在位置。然后统计出从起始位置到当前位置的字符串中有多少换行符。
      

  5.   

    这种方法只能得到光标所在的行是第几行, 可是得不到我想要的  TextBox 显示的是第几行
      

  6.   

    为什么不用richTextBox,做起来简单要是你能得到当前光标是第几行(curRow)一样也可以得到你要的
    当前textbox的第一行是
    firstRow = curRow / 10 + 1
      

  7.   

    wcmj(望尘莫及)因为richTextBox我找不到双击事件!
    你给我的方法也是一个解决办法,
    完善一点就是要先得到字体的高度, 有TextBox高度除以字高,得到 TextBox可以显示的行,
    再用你说的方法
    这个问题我自己做出来了,
    我的方法是, 鼠标按下时,得到当前坐标, 再用坐标除以行高, 得到一个数, 再用当前鼠标所在行减这个数就OK了一会结帖!
      

  8.   

    firstline = SendMessage((hWndControl,      EM_GETFIRSTVISIBLELINE,0,0 );