2014-09-19 60 views
1

我有一個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語句,並調出表單?

+0

您是否調試過檢查arg()中返回的值?它是否達到了關閉?考慮用Me.Close替換後者() – 2014-09-19 04:41:46

回答

0

看着你的代碼有:

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

... 

就表示,如果args來數爲3行,再進行嘗試訪問ARGS(5),這將是第六屆的說法。 您還在表單的加載事件which if your OS is a 64 bit OS any unhandled errors will be silently swallowed中執行此操作,而沒有任何通知。

+0

感謝Mark。問題與您所說的完全相同 - 我的打字錯誤,但是因爲它是在Form Load中,所以沒有告訴我。反過來,該程序直接跳到表單。 – DaveyD 2014-09-19 13:18:06

+0

很高興工作。我自己被這種情況困擾了。 – 2014-09-19 13:19:12