0

我真的被这个难住了......

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

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

我不知道为什么会这样……

出现的消息框是:“test1”“test2”“test3”然后什么都没有,因为我访问了警报数组?

我不知道,请帮忙!

我也看不到任何错误或编译问题或任何东西!

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

4

1 回答 1

1

问题是抛出异常,因为alertsis Nothing

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

Public Shared alerts As String(-1)

正确的方法是在尝试使用之前测试 Nothing。

If alerts IsNot Nothing Then
  ' Do something with it

您必须做的另一件事是将异常处理添加到加载事件或添加AppDomain 未处理的异常处理程序或处理WinforsFormsApplicaBase UnhandledException 事件

Load event:

Try
Catch theException As Exception
  Call MsgBox(theException.Message)
End Try
于 2013-09-17T23:56:17.197 回答