如何在richtextbox中转到某行
Form链接.Text1.SelStart = SendMessage(Text1.hWnd, EM_LINEINDEX, i - 1, 0&)
i为要转到的某行的行号
不知为何无法转到该行是空行的行 例如假如第2行是空行, 那么我想转到第2行,vb总是无法转到第二行,如果第3行不是空行,那么它就转到第3行------不知是什么原因
Form链接.Text1.SelStart = SendMessage(Text1.hWnd, EM_LINEINDEX, i - 1, 0&)
i为要转到的某行的行号
不知为何无法转到该行是空行的行 例如假如第2行是空行, 那么我想转到第2行,vb总是无法转到第二行,如果第3行不是空行,那么它就转到第3行------不知是什么原因
Dim a
a = InStr(RichTextBox1.Text, vbCrLf & vbCrLf)
If a = 0 Then a = Len(RichTextBox1.Text)
RichTextBox1.SetFocus
RichTextBox1.SelStart = a + 1
Dim n As Long
n = CLng(InputBox("光标指到第几行", "info", Int(Rnd * 100)))
RichTextBox1.SetFocus
SendKeys "^{home}"
SendKeys "{down " & n & "}"
End SubPrivate Sub Form_Load()
RichTextBox1.Text = Replace(Replace(String(100, "1"), "1", "012340"), "0", vbCrLf)
End Sub
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 SubPrivate 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
SendKeys "{down " & n & "}" ------n是什么意思?
for i=1 to n
SendKeys "{down}"
next
不过这种方法太废时间, 本来我编的程序的目的是删除空行以及含有空格的空行,假如用这种方法是否太耗时间?
n = CLng(InputBox("光标指到第几行", "info", Int(Rnd * 100))) - 1
SendMessage RichTextBox1.hWnd, EM_LINESCROLL, 0, n& 这个代码是不是?这么我试验了,他没反应
n = CLng(InputBox("光标指到第几行", "info", Int(Rnd * 100))) - 1
SendKeys "{down " & n & "}" ------n是什么意思?n你自己指定
n = CLng(InputBox("光标指到第几行", "info", Int(Rnd * 100))) - 1
SendMessage RichTextBox1.hWnd, EM_LINESCROLL, 0, n& 这个代码是不是?这么我试验了,他没反应
------------------
报什么错?贴上你的代码
"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=
Private Sub Command1_Click()
Dim temp As String, s() As String, i As Long
temp = RichTextBox1.Text
s = Split(temp, vbCrLf)
For i = 0 To UBound(s)
If Len(Trim(s(i))) = 0 Then s(i) = ""
Next
temp = Join(s, vbCrLf)
While InStr(temp, vbCrLf & vbCrLf) > 0
temp = Replace(temp, vbCrLf & vbCrLf, vbCrLf)
Wend
RichTextBox1.Text = temp
End Sub
Private Sub Command1_Click()
Randomize
Dim n As Long, s() As String
n = CLng(InputBox("光标指到第几行", "info", Int(Rnd * 100))) - 1
s = Split(RichTextBox1.Text, vbCrLf)
ReDim Preserve s(n - 1)
n = Len(Join(s, vbCrLf)) + Len(vbCrLf)
RichTextBox1.SetFocus
RichTextBox1.SelStart = n
End Sub