Предотвратить загрузку формы, если условие не выполнено

У меня есть приложение формы Windows в VB. Я хотел указать, что если аргументы передаются через командную строку, форма не должна отображаться. Я не уверен, почему следующий код не работает. Любые предложения будут оценены. Спасибо, Дэйви.

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim args As String() = Environment.GetCommandLineArgs()
    MsgBox(args.count())
    If args.Count() > 1 Then
        If args(1) = "delete" Then
            If args.Count() = 3 Then
                deletepage(args(2), args(5))
                Close()
            End If
        ElseIf args(1) = "add" Then
            If args.Count() >= 5 Then
                addpage(args(2), args(3), args(4), args(5))
                Close()
            End If
        End If
    End If
    loadnames()
End Sub

Появляется окно сообщения и отображается 5 (передано 5 аргументов). Но затем программа полностью игнорирует оператор if и выводит форму ??


person DaveyD    schedule 19.09.2014    source источник
comment
Вы выполнили отладку, чтобы проверить значение, возвращаемое в arg()? Это приближается к Закрытию? Рассмотрите возможность замены последнего на Me.Close()   -  person Nadeem_MK    schedule 19.09.2014


Ответы (1)


глядя на ваш код, у вас есть:

If args.Count() = 3 Then
    deletepage(args(2), args(5))

...

Вы заявляете, что если количество аргументов равно 3, то вы пытаетесь получить доступ к аргументам (5), который будет 6-м аргументом. Вы также делаете это в событии Load формы, что, если ваша ОС является 64-битной ОС, любые необработанные ошибки будут молча проглатывать без какого-либо уведомления.

person Mark Hall    schedule 19.09.2014
comment
Спасибо, Марк. Проблема была именно такой, как вы сказали - у меня была ошибка при наборе текста, но, поскольку она была в загрузке формы, она мне не сказала. В свою очередь, программа перескочила прямо к форме. - person DaveyD; 19.09.2014