vb.net - 索引超出范围
问题描述
我的代码不起作用,请帮助
Private Sub Form3_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
Dim lblControls() As Label = {lblName, lblID, lblGender, lblBirthDate, lblCity, lblContactNumber, lblAddress, lblHistory}
Dim sReader As New System.IO.StreamReader(Form1.pathStorage & "Patients\" & selectedPatient & "\patientInfo.txt")
Dim strValues(11) As String
Dim counter As Integer = 0
While sReader.Peek <> 1
strValues(counter) = sReader.ReadLine
counter += 1
End While
counter = 0
For Each lbl As Label In lblControls
lbl.Text = strValues(counter)
counter += 1
Next
sReader.Close()
解决方案
我已更改为 File 类来完成您的任务。您不需要声明 File 的实例。StreamReader 不需要关闭而是处置。一个Using...End Using
块或Try...Finally...End Try
确保 StreamReader 的关闭和处置,以便 File 类更易于使用。
您不需要为 strValues 声明大小,因为它是在声明时初始化的。我添加了一个检查两个数组的大小是否相同。
Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
Dim lblControls() As Label = {lblName, lblID, lblGender, lblBirthDate, lblCity, lblContactNumber, lblAddress, lblHistory}
Dim path As String = pathStorage & "Patients\" & selectedPatient & "\patientInfo.txt"
Dim strValues = File.ReadAllLines(path) 'Returns a string array
If lblControls.Length <> strValues.Length Then
MessageBox.Show("Labels do not equal data.")
Return
End If
Dim counter As Integer = 0
For Each lbl As Label In lblControls
lbl.Text = strValues(counter)
counter += 1
Next
End Sub
推荐阅读
- javascript - 如何将 Firebase 上传图片的图片下载 URL 转换为 base64
- python - 检查 psycopg2 客户端是否在听主题
- api - Mapbox 导航 api 返回 422 无法处理的实体
- google-apps-script - Google 表格脚本 HTML 在屏幕上输出一整行
- python-3.x - 带有 Gstreamer 的 cv2。错误:GST_PIPELINE 语法。y:716:priv_gst_parse_yyparse:没有元素 xxx
- python - 使用 Airflow 的 Impala 查询
- android - 如何为 UI 和 Android 服务使用两个 android 应用程序类?
- git - 我可以从 git-lfs 中排除一些文件吗?
- gulp - gulp-clean 和 del 无法清理我想要的文件夹
- python - 使用 ExternalCredentials 对 rabbitmq 进行身份验证