VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3219|回复: 13

如何在richtextbox中转到某行

[复制链接]

1

主题

7

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2021-3-11 17:30:02 | 显示全部楼层 |阅读模式
如何在richtextbox中转到某行
Form链接.Text1.SelStart = SendMessage(Text1.hWnd, EM_LINEINDEX, i - 1, 0&)
i为要转到的某行的行号
不知为何无法转到该行是空行的行 例如假如第2行是空行, 那么我想转到第2行,vb总是无法转到第二行,如果第3行不是空行,那么它就转到第3行------不知是什么原因
回复

使用道具 举报

1

主题

7

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
 楼主| 发表于 2021-3-11 17:45:01 | 显示全部楼层
请问各位高手,有没有其他方法在richtextbox中转到某行 能转到该行是空行的行   谢谢
回复

使用道具 举报

0

主题

34

帖子

17.00

积分

新手上路

Rank: 1

积分
17.00
发表于 2021-3-11 18:00:02 | 显示全部楼层

Dim a
a = InStr(RichTextBox1.Text, vbCrLf & vbCrLf)
If a = 0 Then a = Len(RichTextBox1.Text)
RichTextBox1.SetFocus
RichTextBox1.SelStart = a + 1
回复

使用道具 举报

0

主题

14

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2021-3-11 18:30:01 | 显示全部楼层
Private Sub Command1_Click()
Dim n As Long
n = CLng(InputBox("光标指到第几行", "info", Int(Rnd * 100)))
RichTextBox1.SetFocus
SendKeys "^{home}"
SendKeys "{down " & n & "}"
End Sub

Private Sub Form_Load()
RichTextBox1.Text = Replace(Replace(String(100, "1"), "1", "012340"), "0", vbCrLf)
End Sub
回复

使用道具 举报

0

主题

14

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2021-3-11 18:45:01 | 显示全部楼层
或者:
Option Explicit
Const EM_LINESCROLL = &HB6
Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Long) As Long
Private Sub Command1_Click()
RichTextBox1.SetFocus
RichTextBox1.SelStart = 0
Randomize
Dim n As Long
n = CLng(InputBox("光标指到第几行", "info", Int(Rnd * 100))) - 1
SendMessage RichTextBox1.hWnd, EM_LINESCROLL, 0, n&
End Sub

Private Sub Form_Load()
Dim i As Long, arr(1 To 500) As String
For i = 1 To 500
arr(i) = IIf(i Mod 9 > 7, "", "第" & i & "行")
Next
RichTextBox1.Text = Join(arr, vbCrLf)
End Sub
回复

使用道具 举报

1

主题

7

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
 楼主| 发表于 2021-3-11 19:00:01 | 显示全部楼层
talent00168 你好
SendKeys "{down " & n & "}" ------n是什么意思?
for i=1 to n
SendKeys "{down}"
next


不过这种方法太废时间,  本来我编的程序的目的是删除空行以及含有空格的空行,假如用这种方法是否太耗时间?
回复

使用道具 举报

1

主题

7

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
 楼主| 发表于 2021-3-11 19:45:01 | 显示全部楼层
talent00168 你好
n = CLng(InputBox("光标指到第几行", "info", Int(Rnd * 100))) - 1
SendMessage RichTextBox1.hWnd, EM_LINESCROLL, 0, n&  这个代码是不是?这么我试验了,他没反应
回复

使用道具 举报

0

主题

14

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2021-3-11 20:30:01 | 显示全部楼层
Dim n As Long
n = CLng(InputBox("光标指到第几行", "info", Int(Rnd * 100))) - 1
SendKeys "{down " & n & "}" ------n是什么意思?n你自己指定
回复

使用道具 举报

0

主题

14

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2021-3-11 20:45:01 | 显示全部楼层
talent00168 你好
n = CLng(InputBox("光标指到第几行", "info", Int(Rnd * 100))) - 1
SendMessage RichTextBox1.hWnd, EM_LINESCROLL, 0, n&  这个代码是不是?这么我试验了,他没反应
------------------
报什么错?贴上你的代码
回复

使用道具 举报

1

主题

7

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
 楼主| 发表于 2021-3-11 21:15:01 | 显示全部楼层
talent00168 你好

Const EM_LINESCROLL = &HB6

      Private Declare Function SendMessage Lib "User32" Alias _
      "SendMessageA" _
         (ByVal hWnd As Long, _
          ByVal wMsg As Integer, _
          ByVal wParam As Integer, _
          ByVal lParam As Long) As Long

      Private Sub Form_Load()
         Dim intLineIndex As Integer, intWordIndex As Integer

         'Initialize Text1.
         Text1.Font = "Courier New"
         Text1.Text = ""
         For intLineIndex = 1 To 25             'Add 25 lines of text.
            Text1.Text = Text1.Text & "Line" & Str$(intLineIndex)
            For intWordIndex = 1 To 5           'Make each line 12 words
                                                'long.
               Text1.Text = Text1.Text & " Word" & Str$(intWordIndex)
            Next intWordIndex
            Text1.Text = Text1.Text & vbCrLf
         Next intLineIndex

         Command1.Caption = "Vertical"
         Command2.Caption = "Horizontal"
      End Sub

      Private Sub Command1_Click()
         Dim lngRet As Long

         lngRet = SendMessage(Text1.hWnd, EM_LINESCROLL, 0, 5&)
      End Sub

      Private Sub Command2_Click()
         Dim lngRet As Long

         lngRet = SendMessage(Text1.hWnd, EM_LINESCROLL, 5, 0&)
      End Sub


可是这种方法是TextBox 控件的滚动功能,它无法使光标定位,无法  text1.selstart=
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表