12
votes

C # - Est-il possible de créer une application Windows Forms pouvant exécuter à partir de la ligne de commande avec des paramètres?

Je voudrais une application de formulaires Windows qui contiendra une interface utilisateur, mais je souhaite qu'il fonctionne à partir de la ligne de commande avec certains paramètres, éventuellement également un / masquer ou / visible = false option.

Comment est-il possible de lire dans les paramètres de la ligne de commande? Et ajuster en conséquence?


0 commentaires

4 Réponses :


3
votes

27
votes

Si vous modifiez cette signature principale par défaut: xxx

à ceci: xxx

Vous pouvez accéder aux variables de commande comme vous le feriez de Une application de console normale, ou si vous souhaitez y accéder d'ailleurs, vous pouvez utiliser: xxx


1 commentaires

HAH, cette première méthode est ce que j'ai utilisé dans une explication à un ami un moment de retour. +1



2
votes

Oui, il devrait fonctionner pour créer le projet en tant que projet d'application Windows normal. Ensuite, dans Program.CS Avant de lancer la fenêtre, appelez Environnement.getCommandLineargs () Pour obtenir les arguments de la ligne de commande et les analyser pour faire ce que vous voulez.


0 commentaires

8
votes
[STAThread]
static void Main(string[] args)
{
    if (args.Length == 0)
    {
        // Run the application in a windows form
        Application.Run(new MainForm( ));
    }
    else
    {
        // Run app from CLI
        Console.WriteLine(DoStuff(args));
    }
}

4 commentaires

+1 pour répondre à la deuxième partie de la question. Vous manquez un support à la fin de l'écrivain (. De plus, je ne pense pas que vous puissiez écrire à la console comme celle-ci dans une application de formulaire Windows.


Vous avez raison que vous ne pouvez pas consoler.writeline à une application WinForms. Le point de ma réponse est que vous n'avez pas besoin de créer une application WindForms, vous pouvez créer une seule exécutable qui fonctionnera sous forme de formulaire ou de ligne de commande en fonction de la manière dont elle est invoquée.


Je viens de tester cela et il n'y a pas de commandwindow ouvert pour le texte, je pense qu'il manque une commande de démarrer la fenêtre COMAMNDLine.


@ Cerc, bonne prise; Un exemple qui se connecte à stdout est ici . console.writeline était probablement un mauvais exemple pour un extrait aussi court.