2016-08-19 40 views
0

我有程序args設置爲Dim args As String() = Environment.GetCommandLineArgs()。我使用arg作爲Stringargs。程序檢查arg是否以".lee"結束,然後繼續。否則,如果arg".txt"結尾,它仍然繼續下一步。否則,如果arg不符合要求,則應彈出MsgBox防止arg顯示MsgBox(),如果arg以「.lee」結尾 - VB.Net

什麼問題是即使支持的類型文件執行,我的程序似乎顯示錯誤對話框。

代碼:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     Dim args As String() = Environment.GetCommandLineArgs() 
     For Each arg As String In args 
      If arg.EndsWith(".lee") Then 
       leeReader.RichTextBox1.LoadFile(arg, RichTextBoxStreamType.PlainText) 
       TextBox1.Text = leeReader.RichTextBox1.Text 
       Btn1.PerformClick() 
      Else 
       If arg.EndsWith(".txt") Then 
        leeReader.RichTextBox1.LoadFile(arg, RichTextBoxStreamType.PlainText) 
        TextBox1.Text = leeReader.RichTextBox1.Text 
        Btn1.PerformClick() 
       Else 
        MsgBox("We don't recommend unsupported files") 
        Me.Close() 
       End If 
      End If 
     Next 
    End Sub 

我試圖添加Exit Sub但它是行不通的。更改後

代碼:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     Dim args As String() = Environment.GetCommandLineArgs() 
     For Each arg As String In args 
      If arg.EndsWith(".lee") Then 
       leeReader.RichTextBox1.LoadFile(arg, RichTextBoxStreamType.PlainText) 
       TextBox1.Text = leeReader.RichTextBox1.Text 
       Btn1.PerformClick() 
       Exit Sub 
      Else 
       If arg.EndsWith(".txt") Then 
        leeReader.RichTextBox1.LoadFile(arg, RichTextBoxStreamType.PlainText) 
        TextBox1.Text = leeReader.RichTextBox1.Text 
        Btn1.PerformClick() 
        Exit Sub 
       Else 
        MsgBox("We don't recommend unsupported files. Give it a try?") 
       End If 
      End If 
     Next 
    End Sub 

如果你知道解決方案/如果我要去的地方錯了/你需要更多的幫助,請回答以下/評論。

+0

您可以顯示命令行的典型示例嗎?你遇到空間還是其他的東西?在嘗試解決導致問題的原因時,在消息框中顯示'arg'。 –

回答

2

你通過所有的命令行參數的循環,而是(從文檔)

的第一個元素是可執行文件名,後面的零個 或多個元素包含剩餘的命令行參數。

所以你總是會看到第一個參數的消息框。請嘗試:Environment.GetCommandLineArgs().Skip(1)

+0

當我運行程序時,我總是收到這個未處理的異常: '在Lee Converter.exe中發生未處理的異常'System.InvalidCastException' '其他信息:無法轉換類型爲' d__30'的對象'1 [System.String]'鍵入'System.String []'。' –

+0

它發生在以下行上: 'Dim args As String()= Environment.GetCommandLineArgs()。Skip(1)' –

+0

那麼,是的,你需要做'.Skip(1).ToArray()'或者只是說:'Dim args = Environment.GetCommandLineArgs()' – aquinas