2016-08-19 1 views
0

J'ai le programme avec args comme Dim args As String() = Environment.GetCommandLineArgs(). J'ai utilisé arg comme String dans args. Le programme vérifie si arg se termine par ".lee" puis continue. Sinon, si le arg se termine par ".txt", il continue à passer aux étapes suivantes. Sinon, si arg ne répond pas aux exigences, il devrait apparaître un MsgBox.Empêcher l'argument d'afficher MsgBox() si l'argument se termine par ".lee" - VB.Net

Quel est le problème même si un fichier de type pris en charge est exécuté, mon programme semble afficher la boîte de dialogue d'erreur.

code:

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 

j'ai essayé d'ajouter Exit Sub mais cela ne fonctionnerait pas.

code

après modifications:

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 

Si vous connaissez la solution/Si je me trompe quelque part/vous avez besoin de plus d'aide, s'il vous plaît réponse/commentaire ci-dessous.

+0

Pouvez-vous montrer un exemple typique de la ligne de commande? Rencontrez-vous des espaces ou autre chose? Montrez le 'arg' dans votre boîte de message pendant que vous essayez de déterminer ce qui cause votre problème. –

Répondre

2

Tu boucle à travers tous les arguments de ligne de commande, mais (à partir de la documentation)

le premier élément est le nom du fichier exécutable et le zéro ou plusieurs éléments suivants contiennent la ligne de commande restant arguments.

Vous allez donc toujours voir la boîte de message pour le premier argument. Essayez: Environment.GetCommandLineArgs().Skip(1)

+0

Je continue d'obtenir cette exception non gérée lorsque j'exécute le programme: 'Une exception non gérée de type 'System.InvalidCastException' s'est produite dans Lee Converter.exe' ' Informations supplémentaires: Impossible de diffuser l'objet de type ' d__30' '1 [System.String] 'pour taper' System.String [] '.' –

+0

Il se produit sur la ligne suivante: 'Dim arguments As String() = Environment.GetCommandLineArgs(). Skip (1)' –

+0

Bien, oui, vous devrez faire '.Skip (1) .ToArray()' ou juste dire: 'Dim args = Environment.GetCommandLineArgs()' – aquinas