RichTextBox1.SelStart = 1
就是说把光标移动到第一个字符每天加10分,我一年前注册现在分数已经由3000多了.所以早注册早合算.多注册多合算.

解决方案 »

  1.   

    to NYN(流陨落):
    把光标移动到第一个字符,然后怎么办啊?难不成把光标一个字符一个字符的往后移,然后判断是否到了另一行了?(不会吧?)
    另外,怎么判断到了另外一节了?判断是否是回车符吗?
    还有一个问题呢?没有人指点一下吗?我顶~~~~
      

  2.   

    RichTextBox1的SelStart属性其实是从RichTextBox的文本中定义起点,然后你可以用SelLength设置长度,然后取出部分文本对其格式进行设置,如字体、颜色。其实也不能实现定位的功能。
    至于第二个问题,也不是很好实现。所以用RichTextBox实现你提出的问题还是比较困难的。
      

  3.   

    可以这样,用二分法测试不同的位置在第几行,然后用selstart定位到这个位置。
    不知道有没有别的更好的办法,反正我都是这样实现的。
      

  4.   

    i=richtextbox.find(char(10))'找回车符
    richtextbox.selstart=i
    应该可以定位到行了,剩下的你自己编一下!
      

  5.   

    好象 api 里有个能判断总共有多少行,每行有多少个字符的,第一个可见行是第几行的,光标是在第几行第几列的.......大概和 charfrompos之类的有关吧,你查一下msdn,ok?
      

  6.   

    唉,给点思路吧,有没有更好的定位方法啦?没想到定位这么烦。如果真的如楼上的这位 Arcan(Arcan) 同志所说的那样,那不是要先找到这一行,再移到行首?而happybeyond(马丁)同志所说的,我刚试了一下,呵呵,只能移动到一节,不过可以定位到节了,但还是不能定位到行,请继续帮忙还有第二个问题呢?楼上有位同志说不好解决,那就给点思路吧!是不是得到查找窗口的方位大小,和所选的文本位置进行比较?如果重叠就移开窗口?一个小时后我再来看,请各位高手帮忙
    多谢freelazy(懒人)帮忙,我会多过你分的,多谢
      

  7.   

    我好像看过,sendmessage做的,我找找~~
      

  8.   

    设定的话,应该差不多,找找sendmessage关于richtextbox的相关函数[名称]           CSDN_文档中心_取得TextBox、RichTextBox光标所在的行和列([数据来源]       未知[内容简介]
    http://www.csdn.net/develop/Read_Article.asp?Id=16318[源代码内容]取得TextBox、RichTextBox光标所在的行和列(支持中文)    ASPBIT(原作) 关键字    行,列,TextBox,RichTextBox,光标'************************************************************
    '功能:取得TextBox、RichTextBox光标所在的行和列
    '      支持中文,一个汉字算一列
    '      有问题请给我写邮件
    '作者:Matrix
    '邮件:[email protected]
    '************************************************************
    Option Explicit
    Private Declare Function SendMessage Lib "user32" Alias _
            "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As _
            Long, ByVal wParam As Long, lParam As Any) As Long
    Private Declare Sub CopyMemory Lib "kernel32" Alias _
            "RtlMoveMemory" (pDst As Any, pSrc As Any, _
            ByVal ByteLen As Long)Private Const WM_USER = &H400
    Private Const EM_EXGETSEL = (WM_USER + 52)
    Private Const EM_LINEFROMCHAR = &HC9
    Private Const EM_LINEINDEX = &HBBPrivate Type CHARRANGE
        cpMin As Long
        cpMax As Long
    End Type'取得光标所在的列
    Public Function GetCurCol(ByVal hWnd As Long, ByVal Text As String) As Long
        Dim LineIndex As Long
        Dim SelRange As CHARRANGE
        Dim TempStr As String
        Dim TempArray() As Byte
        Dim TempText() As Byte
        TempArray = StrConv(Text, vbFromUnicode)
        
        '取得当前行第一个字符的位置
        LineIndex = SendMessage(hWnd, EM_LINEINDEX, -1, 0)
        '取得当前被选中文本的位置 适用于 RichTextBox
        'TextBox 用 EM_GETSEL 消息
        Call SendMessage(hWnd, EM_EXGETSEL, 0, SelRange)
        If SelRange.cpMin - LineIndex = 0 Then
            GetCurCol = 1
        Else
            TempStr = String(SelRange.cpMin - LineIndex, 13)
            '复制当前行开始到选择文本开始的文本
            CopyMemory ByVal StrPtr(TempStr), ByVal StrPtr(TempArray), SelRange.cpMin - LineIndex
            TempText = TempStr
            '删除无用的信息
            ReDim Preserve TempText(SelRange.cpMin - LineIndex - 1)
            '转换为 Unicode
            TempStr = StrConv(TempText, vbUnicode)
            GetCurCol = Len(TempStr) + 1
        End If
    End Function'取得光标所在的行
    '此函数非原创
    Public Function GetCurRow(ByVal hWnd As Long) As Long
        Dim LineIndex As Long
        'wParam参数设置为-1  取得当前行的字符位置
        LineIndex = SendMessage(hWnd, EM_LINEINDEX, -1, 0)
        '根据参数wParam指定的字符位置返回该字符所在的行号
        GetCurRow = SendMessage(hWnd, EM_LINEFROMCHAR, LineIndex, 0) + 1
    End Function