2013-09-17 2 views
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 

Я не знаю, почему это происходит ...

MessageBoxes придумывают являются: «test1» «test2 " " test3 " , тогда ничего, потому что я обратился к массиву предупреждений?

У меня нет подсказки, пожалуйста, помогите!

ТАКЖЕ Я не вижу ошибок или компиляции проблем или НИЧЕГО!

Программа продолжается после этого, но она просто не откроет другие окна сообщений, которые я хочу заменить с помощью реального кода.

ответ

1

Проблема в том, что исключение выбрасывается из-за того, что alerts является Nothing.

Простым способом для инициализации строки является размер -1, так что это пустой массив.

Public Shared alerts As String(-1) 

Правильный способ - протестировать Nothing, прежде чем пытаться его использовать.

If alerts IsNot Nothing Then 
    ' Do something with it 

Другое дело, что вы должны сделать, это добавить обработку исключений в случае загрузки или добавить AppDomain unhandled exception handler или обработать WinforsFormsApplicaBase UnhandledException event.

Load event: 

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

Именно то, что я хотел. Иногда я забываю, как отличается VB.NET ... – pathurs

 Смежные вопросы

  • Нет связанных вопросов^_^