web-dev-qa-db-fra.com

Console.WriteLine n'apparaît pas dans la fenêtre de sortie

J'ai mis quelques appels Console.WriteLine à tester, mais ils n'apparaissent pas dans la zone de sortie?

public static ArrayList myDeliveries = new ArrayList();

public mainForm(){
    InitializeComponent();
}

private void mainForm_Load(object sender, EventArgs e){

    if (!File.Exists("../../MealDeliveries.txt")){
        MessageBox.Show("File not found!");
        return;
    }

    using (StreamReader sr = new StreamReader("../../MealDeliveries.txt")){
        //first line is delivery name 
        string strDeliveryName = sr.ReadLine();
        Console.WriteLine("Test content");

        while (strDeliveryName != null){

            //other lines 
            Delivery d = new Delivery(
                strDeliveryName, 
                sr.ReadLine(),
                sr.ReadLine(), 
                sr.ReadLine(),
                sr.ReadLine(), 
                sr.ReadLine(),
                sr.ReadLine()
            );

            mainForm.myDeliveries.Add(d);

            //check for further values
            strDeliveryName = sr.ReadLine();
        }
    }

    displayDeliveries();


}


private void displayDeliveries(){

    lstDeliveryDetails.Items.Clear();
    Console.WriteLine("Test content");
    Console.WriteLine(mainForm.myDeliveries.Count);
    foreach (Delivery d in mainForm.myDeliveries){
        lstDeliveryDetails.Items.Add(d.DeliveryName);

    }
}

Quelqu'un peut-il aider?

64
sark9012

Si vous avez l'intention d'utiliser cette sortie en production, utilisez les membres de la classe Trace . Cela rend le code portable, vous pouvez câbler différents types d'écouteurs et les afficher dans la fenêtre de la console, la fenêtre de débogage, le fichier journal ou ce que vous préférez.

S'il s'agit simplement d'un code de débogage temporaire que vous utilisez pour vérifier que ce code est en cours d'exécution ou qu'il possède les bonnes valeurs, utilisez la classe Debug comme le suggère Zach .

Si vous devez absolument utiliser la console, vous pouvez attacher une console dans la méthode Main du programme.

40
Aaronaught

Console sorties dans la fenêtre de la console et les applications Winforms n’affiche pas la fenêtre de la console. Vous devriez pouvoir utiliser System.Diagnostics.Debug.WriteLine pour envoyer une sortie dans la fenêtre de sortie de votre IDE.

Edit: En ce qui concerne le problème, avez-vous vérifié si votre mainForm_Load est effectivement appelé? Vous pouvez placer un point d'arrêt au début de mainForm_Load pour voir. S'il n'est pas appelé, je soupçonne que mainForm_Load n'est pas connecté à l'événement Load

En outre, il est plus efficace et généralement préférable de remplacer On{EventName} au lieu de s'abonner à {EventName} à partir de classes dérivées (dans votre cas, remplacer OnLoad au lieu de Load).

86
Zach Johnson

Si vous souhaitez que la sortie Console.WriteLine("example text") s'affiche dans la fenêtre Sortie de débogage, modifiez temporairement le type de sortie de votre application d'application console à application Windows. 

Dans les menus, choisissez Projet + Propriétés, puis naviguez jusqu'à Type de sortie: liste déroulante, passez à Application Windows, puis exécutez votre application.

Bien sûr, vous devriez le modifier pour créer une application console destinée à être exécutée en dehors de l'EDI.

(testé avec Visual Studio 2008 et 2010, il devrait également fonctionner dans les dernières versions)

10
davervw

Si vous développez une application en ligne de commande, vous pouvez également utiliser Console.ReadLine() à la fin de votre code pour attendre que vous appuyez sur la touche "Entrée" avant de fermer la fenêtre de la console afin de pouvoir lire votre sortie. Toutefois, les réponses de trace et de débogage indiquées ci-dessus sont de meilleures options. 

1
paul jerman

Ancien thread, mais dans VS 2015 Console.WriteLine n'écrit pas dans la fenêtre de sortie si "Activer le processus d'hébergement Visual Studio" n'est pas coché ou est désactivé dans les propriétés du projet -> onglet Débogage

0
Blak RUSH

Quand le problème se passe sur Mac VS 2017 (auquel j'ai fait face).

  1. Aller au projet >> "Votre nom de projet" options. 
  2. Une fenêtre d'option apparaîtra
  3. Aller à RUN >> Option de menu par défaut 
  4. Cochez l'option "Exécuter sur une console externe" VRAI et dites OK

Exécutez votre code d'application maintenant. 

0
Vinod Singh Bist

Essayez de décocher la case à cocher "Utiliser le mode de compatibilité gérée" dans

Outils => Options => Débogage => Général

Cela a fonctionné pour moi.

0
slava.stackoverflow

Utiliser Console.WriteLine( "Test" ); permet d’écrire des messages de journal dans la fenêtre de sortie (Menu Affichage -> Sortie) de Visual Studio pour un projet Windows Forms/WPF.

Cependant, j’ai rencontré un cas où cela ne fonctionnait pas et où seul System.Diagnostics.Debug.WriteLine( "Test" ); fonctionnait. J'ai redémarré Visual Studio et Console.WriteLine() a recommencé à fonctionner. Semble être un bogue de Visual Studio. 

0
Dhiren Sarup