2016-07-14 14 views
-3

Ich versuche, die Konsole in einer Windows Form-Anwendung zu öffnen, so dass ich später mit der Spiel-Engine, an der ich gerade arbeite, Dinge später auf die Straße bringen kann. Leider aus irgendeinem Grunde kann ich die Konsole nicht diesen Code zu öffnen mit:Konsole auf Windows Forms Anwendung

private void GameWind_Load(object sender, EventArgs e) 
{ 
    AllocConsole(); 
} 
//allows the game console to be seen during execution 
[DllImport("kernel32.dll", SetLastError = true)] 
[return: MarshalAsAttribute(UnmanagedType.Bool)] 
static extern bool AllocConsole(); 

Apologies in meinen Kommentar zu halten, aber egal was ich tue, ich kann das einfach nicht zur Arbeit kommen. Ich habe es mindestens 5 mal neu abgetippt, um einen Tippfehler zu finden, ich habe sogar ein paar andere Methoden ausprobiert, um die Konsole aufzurichten, und bisher funktioniert nichts. Ich fühle mich, als würde ich etwas vermissen, aber ich kann es einfach nicht sagen. Wenn jemand herausfinden kann, was mit meinem Code nicht stimmt, lassen Sie es mich wissen.

+1

Sie haben das Problem, das Sie mit dem von Ihnen geposteten Code haben, nicht erklärt. * Ich kann die Konsole nicht öffnen * ist nicht sinnvoll, und iehter ist * soweit nichts funktioniert *. Wie funktioniert es * nicht? Was ** speziell ** können wir Ihnen hier helfen? (Und als eine fast unzerstörbare Regel müssen Sie Funktionen deklarieren ** bevor ** Sie sie verwenden, nicht danach. Haben Sie versucht, auf [PInvoke] (http://pinvoke.com) zu schauen?) –

+0

Auch Sie haben versucht, die [AllocConsole docs] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms681944 (v = vs.85) .aspx) zu lesen, die erklären, wenn die Funktion fehlschlägt (gibt 0 zurück), können Sie GetLastError verwenden, um herauszufinden, warum? Und dass AllocConsole nicht 'bool' zurückgibt, sondern ein Handle für eine Konsole, die Sie dann für die weitere Interaktion mit dieser Konsole verwenden? Es ist möglicherweise besser, wenn Sie zunächst [Konsolen] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms682055 (v = vs.85) .aspx) aufrufen. –

+0

Ich sehe nichts falsch mit Ihrem Code. Überprüfen Sie den Rückgabewert von 'AllocConsole' und rufen Sie' Marshal.GetLastWin32Error' auf, um zu sehen, was das Problem ist? Ich schrieb eine Reihe von Artikeln über die Verwendung der Konsolen-API von C#. Leider sind die Artikel nicht mehr online verfügbar, aber Sie können den vollständigen Quellcode von meiner Website herunterladen. http://www.mischel.com/pubs/consoledotnet.zip. Was Sie suchen, ist in den Dateien JConsole.cs und WinCon.cs. Beachten Sie, dass die Projekt- und Projektdateien sehr alt sind. Der Code wird jedoch trotzdem kompiliert, wenn Sie ihn in eine neue Lösung einbinden. –

Antwort

-2

Ich verstehe wirklich nicht, was Konsole in Windows Form bedeutet.

Möchten Sie Konsolenfenster an Windows Form anhängen wie andere Steuerelemente Button, TextBox, etc .. oder möchten Sie es nur anzeigen, wenn Sie Anwendung ausführen?

Ich habe einige Ideen:

  1. Mit RichTextBox-Steuerelement.
  2. Setzen Sie den Projekttyp auf die Konsolenanwendung. In diesem Fall werden Windows Form und Console beim Ausführen Ihrer Anwendung angezeigt.
  3. Schreiben Sie stattdessen alles in das Debug-Fenster.
  4. Schreiben Sie stattdessen alles in die Protokolldatei.

Ich hoffe, es ist nützlich.