vb.net - 带计时器的 RichTextBox 阅读器
问题描述
我有一个显示 的 Button OpenFileDialog
,因此我可以选择一个.txt
文件并将其显示在RichTextBox1
.
我希望当我按下时Go
,以 5 秒的延迟逐行读取文本文件并显示读取的每一行Label4
。
我有 5 行test.txt
文件。现在我从我正在使用的软件中选择这个文件,当我选择这个文件时,它会将我的test.txt
文件结果放入RichTextBox
.
我希望当我单击时Go
,它会读取第 1 行 5 秒,然后在读取时将其显示在Label4
. 然后,5 秒后,它开始读取第 2 行并显示它,Label4
依此类推,直到读取所有行。
这是我的代码:
Imports System.Runtime.InteropServices
Public Class Form1
<Runtime.InteropServices.DllImport("wininet.dll", SetLastError:=True)>
Private Shared Function InternetSetOption(ByVal hInternet As IntPtr, ByVal dwOption As Integer, ByVal lpBuffer As IntPtr, ByVal lpdwBufferLength As Integer) As Boolean
End Function
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Public Structure Struct_INTERNET_PROXY_INFO
Public dwAccessType As Integer
Public proxy As IntPtr
Public proxyBypass As IntPtr
End Structure
Private Sub UseProxy(ByVal strProxy As String)
Const INTERNET_OPTION_PROXY As Integer = 38
Const INTERNET_OPEN_TYPE_PROXY As Integer = 3
Dim struct_IPI As Struct_INTERNET_PROXY_INFO
struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_PROXY
struct_IPI.proxy = Marshal.StringToHGlobalAnsi(strProxy)
struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("local")
Dim intptrStruct As IntPtr = Marshal.AllocCoTaskMem(Marshal.SizeOf(struct_IPI))
Marshal.StructureToPtr(struct_IPI, intptrStruct, True)
Dim iReturn As Boolean = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, System.Runtime.InteropServices.Marshal.SizeOf(struct_IPI))
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Label4.Text = (RichTextBox1.Text)
UseProxy(Label4.Text)
WebBrowser1.Navigate(TextBox3.Text)
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
If (OpenFileDialog1.ShowDialog = DialogResult.OK) Then
RichTextBox1.Text = My.Computer.FileSystem.ReadAllText(OpenFileDialog1.FileName)
End If
End Sub
End Class
解决方案
在设计器中将 Timer 添加到您的表单中,设置间隔然后处理 Timer.Tick 事件。
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Timer1.Interval = 5000
Timer1.Start()
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Static i As Integer
If i < RichTextBox1.Lines.Count Then
Label1.Text = RichTextBox1.Lines(i)
i += 1
Else
Label1.Text = ""
Timer1.Stop()
End If
End Sub
推荐阅读
- jquery - 如何为“contenteditable”可编辑字段添加取消按钮?
- android - 将 Cordova 版本从 2.9 更新到 9.0
- python - 如何在 Python 中将两个字典相加以创建另一个具有整数分量的字典?
- fullcalendar - 自定义关于 v4.0.1 中的自定义视图
- r - 使用 tmap 绘制 sf 数据时出现“二进制运算符的非数字参数”错误
- python - DeprecationWarning、PendingDeprecationWarning 和 FutureWarning 之间的区别
- firebase - 优雅地处理通知响应 - React Native
- angular - 无法将 patchValue 与选择值绑定到对象一起使用
- python - Python 使用类似于模拟补丁的技术缓存内部调用
- python - Pandas 方法仅格式化一列的数字条目