2016-08-19 9 views
0

У меня есть программа с args, установленная как Dim args As String() = Environment.GetCommandLineArgs(). Я использовал arg как String в args. Программа проверяет, заканчивается ли 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

Я продолжаю получать это необработанное Исключение при запуске программы: 'Необработанное исключение типа 'System.InvalidCastException' произошло в Lee Converter.exe' ' Дополнительная информация: Невозможно наложить объект типа ' 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