使用 Text1.Text = Text1.Text & str 追加大量數據時,界面卡頓、閃爍,性能差。
Text 屬性每次賦值都會觸發控件重繪、內存重新分配。Private Sub AppendTextFast(ByVal txt As String)
' 將光標移至文本末尾
Text1.SelStart = Len(Text1.Text)
' 在光標處插入文本,不觸發全量重繪
Text1.SelText = txt
' 可選:自動滾動到底部
Text1.SelStart = Len(Text1.Text)
End Sub
AppendTextFast,減少 UI 線程切換。LockWindowUpdate Text1.hWnd / UnlockWindowUpdate 包裹大批量追加(需 API 聲明)。RichTextBox(支持 AppendText 方法)或虛擬列表 ListView (OwnerDraw)。DoEvents 定時刷新 UI。Private Sub Command1_Click()
' 模擬大量數據追加
Dim i As Long
LockWindowUpdate Text1.hWnd ' 凍結繪製
For i = 1 To 10000
AppendTextFast "Line " & i & vbCrLf
Next i
UnlockWindowUpdate
End Sub
Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long
Private Declare Function UnlockWindowUpdate Lib "user32" () As Long
通過 SelStart/SelText 實現增量追加,配合繪製鎖定,可將萬行日誌追加時間從秒級降至毫秒級。