web-dev-qa-db-fra.com

Windows forme .. console.writeline () où est la console?

J'ai créé une solution de formulaire Windows et dans le constructeur d'une classe que j'ai appelée

Console.WriteLine("constructer called")

Mais je n'ai obtenu que le formulaire et pas la console .. alors où est la sortie?

41
SmartestVEGA

Dans les paramètres du projet, définissez le type d'application sur Console. Ensuite, vous obtiendrez la fenêtre de la console et le formulaire Windows.

57
Tomas Voracek

Vous devriez également envisager d'utiliser Debug.WriteLine , c'est probablement ce que vous recherchez. Ces instructions sont écrites dans les écouteurs de trace de votre application et peuvent être affichées dans Fenêtre de sortie de Visual Studio .

Debug.WriteLine("constructor fired");
46
BrandonZeider

Si vous exécutez votre application dans Visual Studio, vous pouvez voir la sortie de la console dans la fenêtre de sortie.

Débogage -> Windows -> Sortie

Notez que la meilleure façon de générer des données de diagnostic à partir d'une application WinForms est d'utiliser System.Diagnostics.Debug.WriteLine ou System.Diagnostics.Trace.WriteLine car ils sont plus configurables comment et où vous voulez la sortie.

15
Albin Sunnanbo

Comme d'autres réponses l'ont indiqué System.Diagnostics.Debug.WriteLine est le bon appel pour les messages de débogage. Mais pour répondre à votre question:

À partir d'une application Winforms, vous pouvez appeler une fenêtre de console pour une interaction comme celle-ci:

using System.Runtime.InteropServices;

...

void MyConsoleHandler()
{
    if (AllocConsole())
    {
        Console.Out.WriteLine("Input some text here: ");
        string UserInput = Console.In.ReadLine();

        FreeConsole();
    }
}


[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool AllocConsole();

[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool FreeConsole();

J'utilise parfois cela pour déclencher une invite de commande au lieu de fenêtres d'application lorsque certains commutateurs sont ouverts.

Il y a d'autres idées dans cette question similaire si quelqu'un en a besoin:
Quel est le but de Console.WriteLine () dans Winforms

3
noelicus