Visual C# Code geht ned x - schonwieder ich! xD

Hey sogar das ich schonwieder mit dem Visual C# nerve aber ich code momentan nen Ping checker da mein Internet manchmal spackt…

Code:

private void button1_Click(object sender, EventArgs e)
{
bool checkInternet = new Ping().Send(„google.de“, 500).Status == IPStatus.Success;
Ping p = new Ping();
String host = „google.de“;
byte[] buffer = new byte[32];
int timeout = 1000;
PingOptions pingOptions = new PingOptions();
PingReply reply = p.Send(host, timeout, buffer, pingOptions);
if (checkInternet)
{
label1.Text = „Du bist mit den Internet Verbunden“;
label1.BackColor = Color.Green;
Console.WriteLine(„Antwort in {0}ms erhalten“, reply.RoundtripTime);
Console.ReadLine();
}
else
{
label1.Text = „Du bist nicht mit den Internet verbunden“;
label1.BackColor = Color.Red;
}

Console.ReadLine();

}

geht alles bis auf das mit Console.WriteLine und Console.ReadLine… der wills halt ned anzeigen :confused:

Hast du denn überhaupt eine Konsole? Es sieht eher so aus als ob du eine Fenster-basierte Anwendung hast.

Hast du denn überhaupt eine Konsole? Es sieht eher so aus als
ob du eine Fenster-basierte Anwendung hast.

Jetzt bin ich überfragt… Ja ich hab so ne Form also mit buttons etc xD

Dann macht es natürlich keinen Sinn, auf die Konsole zu schreiben. Stattdessen gibt es mehrere Möglichkeiten. Gib eine MessageBox aus (MessageBox.Show(…)), schreibe deine Ausgaben in eine Textbox, wenn es nur zum Debuggen ist, kannst du die Debug-Ausgabe verwenden (System.Diagnostics.Debug.WriteLine(…)).

Entweder ich bin zu dumm dafür oder es klappt einfach nicht :confused:

Wirf doch einfach alles, was mit Console zu tun hat raus und schreibe deine Ausgabe in ein zweites Label.

label2.Text = String.Format("Antwort in {0}ms erhalten", reply.RoundtripTime);

Hi,

Doch das geht, aber nicht wie du es dir vorstellst. Die Ausgabe (zumindest das WriteLine) kommt… allerdings nur im Debug-Modus. Und zwar im Ausgabe-Panel von VisualStudio. Ein Konsolenfenster erscheint aber nicht.

Bei Windows Forms Anwendungen existiert einfach kein Konsolenfenster, da du ja ein Windows Forms Fenster stattdessen hast.

Um trotzdem beides zu haben musst du mit AllocConsole() (aus kernel32.dll) eine erzeugen und kannst die dann normal benutzen. StandardIn und StandardOut werden automatisch dahin weitergeleitet.
Du solltest dann noch FreeConsole() aufrufen wenn du sie nicht mehr brauchst.

[DllImport(„kernel32.dll“, SetLastError = true)]
internal static extern int AllocConsole();

[DllImport(„kernel32.dll“, SetLastError = true)]
internal static extern int FreeConsole();

private void button1_Click(object sender, EventArgs e)
{
bool checkInternet = new Ping().Send(„google.de“, 500).Status == IPStatus.Success;
Ping p = new Ping();
String host = „google.de“;
byte[] buffer = new byte[32];
int timeout = 1000;
PingOptions pingOptions = new PingOptions();
PingReply reply = p.Send(host, timeout, buffer, pingOptions);
AllocConsole();
if (checkInternet)
{
label1.Text = „Du bist mit den Internet Verbunden“;
label1.BackColor = Color.Green;
Console.WriteLine(„Antwort in {0}ms erhalten“, reply.RoundtripTime);
Console.ReadLine();
}
else
{
label1.Text = „Du bist nicht mit den Internet verbunden“;
label1.BackColor = Color.Red;
}

Console.ReadLine();

}

Also mit dem von Nico gehts

Wie kommst Du auf mich ? - ich habe in meinem Profil C++, aber nicht C# angegeben. Dein Problem ist bibliotheksspeziefisch, und die Bibliothek ist speziefisch für C#. - Sorry, mit dieser Bibliothek hatte ich noch nichts zu tun.

Hast du am Anfang auch ein
using System;
using System.IO;

Dann muss in den Projekteinstellungen der Ausgabetyp auf Konsolenanwendung stehen.
So funktioniert es bei mir.

Michael

Visual C#: Console.WriteLine
Du arbeitest ja scheinbar mit einer Form, warum möchtest Du dann etwas auf die Konsole ausgeben? Ich hab’ jetzt grad kein C# installiert, deshalb kann ich es nicht probieren. Wenn überhaupt, müsstest Du das Projekt kompilieren und die EXE-Datei in der Konsole starten…
Hier noch ein ähnlicher Fall:
http://stackoverflow.com/questions/5706723/windows-f…

… I am sorry, because I am not firm in C#… gupetit

-sorry Meister,
kann mir das auch nicht erklären.
Gruß Mike

Hallo,
da du ein Button-Ereignis verwendest, vermute ich mal, dass du eine Forms- und keine Konsolen-Applikation machst. Also macht eine MessageBox mehr Sinn, um eine Nachricht anzuzeigen.
Ungefähr so:
MessageBox.Show(„Hallo“);

Viel Erfolg damit!

Hi!

Handelt es sich denn um eine Consolen-Anwendung? Wenn du einen Button drin hast, sieht mir das eher nach ner Windows-Form-Anwendung aus … Das Console.WriteLine schreibt in ner Consolenandwendung ne Zeile.

Ich würde dir empfehlen eine Multiline-Textbox auf die Oberfläche zu legen und dort entsprechend den Text auszugeben.

Viele Grüße
René

Ich vermute mal, es ist gar keine Konsolenanwendung… sondern eine Windows-Forms-Anwendung.