.net 访问阵列/列表后不运行代码

.net 访问阵列/列表后不运行代码,.net,arrays,vb.net,shared,public,.net,Arrays,Vb.net,Shared,Public,我真的被这件事难住了 当运行我的代码时,程序只是。。。在我尝试对表单加载事件中的数组或列表执行任何操作后,不会运行其余代码,以下是我的代码: Public Shared alerts As String() Private Sub Popup_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Location = New Point(Screen.Primary

我真的被这件事难住了

当运行我的代码时,程序只是。。。在我尝试对表单加载事件中的数组或列表执行任何操作后,不会运行其余代码,以下是我的代码:

Public Shared alerts As String()

Private Sub Popup_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.Location = New Point(Screen.PrimaryScreen.WorkingArea.Width - Me.Width, Screen.PrimaryScreen.WorkingArea.Height - Me.Height)
    ' Check for alerts
    If My.Settings.hasadmin = False Then
        MsgBox("test1")
        pb_alert.Visible = True
        createAlert("Some functions require admin privileges.")
    End If
End Sub

Private Sub createAlert(ByVal msg As String)
    MsgBox("test2")
    updateAlerts()
    MsgBox("test5")
End Sub

Private Sub updateAlerts()
    MsgBox("test3")
    Dim length = alerts.Length
    MsgBox("test4")
End Sub
我不知道为什么会这样

接下来的消息框是: “测试1” “测试2” “测试3” 然后什么都没有,因为我访问了警报阵列

我不知道,请帮帮我

此外,我没有看到任何错误或编译问题或任何事情


程序在此之后继续运行,但它不会显示其他消息框,我当然想用实际代码替换这些消息框。

问题是由于
警报
而引发异常

解决此问题的简单方法是使用-1大小初始化字符串,使其成为空数组

Public Shared alerts As String(-1)
正确的方法是在尝试使用之前不做任何测试

If alerts IsNot Nothing Then
  ' Do something with it
您必须做的另一件事是向load事件添加异常处理,或者添加一个或多个异常处理

Load event:

Try
Catch theException As Exception
  Call MsgBox(theException.Message)
End Try