2016-08-19 38 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