Seite 1 von 1

[C#] problem mit ausgabe bei Konsolen Anwendung

Verfasst: 12.11.2010, 20:29
von Anno1503
Hallo auch,

Nach ewigem suchen habe ich natürlich wieder mal nichts in Google gefunden.
Also normalerweise ist es doch so, dass bei jeder eingabe mit Console.ReadLine()
also nach der eingabe von Zeichen , diese Zeichen dann immer noch bei der ausgabe da stehen.

Jetzt die Fragen:
Wie kann ich es ermöglichen, dass nach der Zeicheneingabe
die Zeichen nicht mehr mit ausgegeben werden?
bzw. nach der eingabe gelöscht werden, also den Zeichen verlauf nicht mehr sieht?

wäre schön wenn es jemand weis

MFG
Anno1503

Re: [C#] problem mit ausgabe bei Konsolen Anwendung

Verfasst: 12.11.2010, 22:48
von Despotist
Ich weiß jetzt nicht wie es bei C# ist weil ich da kaum mit Konsole arbeite aber normalerweise musst du dann den gesamten Bildschirm löschen und was du brauchst neu schreiben. Konsole ist ja einfach eins nach dem anderen ausgeben da kannst ud nicht beliebig in den Zeilen rumlöschen.

Re: [C#] problem mit ausgabe bei Konsolen Anwendung

Verfasst: 13.11.2010, 00:12
von Unknown GER
Der Methode ReadKey() kannst du einen Boolschen Wert übergeben, ob das Zeichen angezeigt werden soll oder nicht (genau entgegengesetzt zu true/false). Du müsstest bzw. könntest also in einer Schleife mit ReadKey() Zeichen einlesen, diese prüfen, und bei Bedarf bzw. der Eingabe von Return die Schleife verlassen, ansonsten das eingelesene Zeichen an einen String anhängen. Voilà. :)

Hier mal ein - recht sinnfreies - Beispiel wie man eine Passworteingabe ganz naiv machen könnte (man würde noch Backspace extra behandeln wollen in der Schleife und evtl. auch alle anderen nichtdruckbaren Zeichen, bzw. nur die gewünschten Zeichen auch wirklich beachten).

Code: Alles auswählen

Console.Write("Password: ");

string password = string.Empty;

while (true)
{
    char key = Console.ReadKey(true).KeyChar;

    if (key == Environment.NewLine[0])
    {
        Console.WriteLine();
        break;
    }

    Console.Write('*');
    password += key;
}

Console.WriteLine("Your password is '{0}'.", password);

Re: [C#] problem mit ausgabe bei Konsolen Anwendung

Verfasst: 16.11.2010, 17:18
von odenter
In ner Schleife Console.Clear() und danach das schreiben was da stehen soll.

Re: [C#] problem mit ausgabe bei Konsolen Anwendung

Verfasst: 17.11.2010, 02:30
von Anno1503
hallo,danke erstmal für die beiträge,
leider hatte ich noch kein erfolg mit den bisherigen Lösungsvorschlägen /:

MFG
Anno1503

Re: [C#] problem mit ausgabe bei Konsolen Anwendung

Verfasst: 17.11.2010, 09:20
von odenter
Warum willst Du denn die eingegebenen Zeichen löschen?

Wenn es für eine Passworteingabe sein soll, dann lass das Passwort eingeben und danach machste ein Clear, geht wunderbar.

Re: [C#] problem mit ausgabe bei Konsolen Anwendung

Verfasst: 17.11.2010, 09:23
von Chromanoid
also ich würde das ganze wie ordenter es vorgeschlagen hat machen. alles bis vor der zeicheneingabe nach einem clear auf die konsole hauen...

Ansonsten schau dir mal diese Funktionen der Konsole an:
MoveBufferArea
und SetCursorPosition
sowie die Eigenschaft CursorLeft/Top.

Soweit ich das sehe musst du vor dem Eintippen die Cursor Position merken und dann dannach nochmal und den beschriebenen Bereich überschreiben

Re: [C#] problem mit ausgabe bei Konsolen Anwendung

Verfasst: 19.11.2010, 01:37
von Anno1503
Ohje jetzt stehe ich irgendwie ganz aufm schlauch /:,
könntest du Chromaid, mir mal ein beispiel Code nennen?

Re: [C#] problem mit ausgabe bei Konsolen Anwendung

Verfasst: 19.11.2010, 01:56
von Jiba
Willst du
1. Das man während der ReadLine Anweisung die Zeichen sieht und nachdem Enter gedrückt wurde die eingegebenen Zeichen vom Bildschirm gelöscht werden oder
2. Eine Passwort eingabe Realisieren so wie von Unknown GER beschrieben nur das du nicht so genau weist wie das umzusetzen ist oder
3. Das man die eingegebenen Zeichen erst garnicht auf dem Bildschirm zu sehen bekommt

Ich Frag nur mal nach weil es hier mehrere lösungen giebt und keiner so 100% weiss was du machen willst (mich eingeschlossen).

Re: [C#] problem mit ausgabe bei Konsolen Anwendung

Verfasst: 19.11.2010, 02:12
von Jiba
Ich denke Chromanoid meinte das ungefähr so:

Code: Alles auswählen

        static void Main(string[] args)
        {
            Console.Write("Test > ");

            int old_x = Console.CursorLeft;
            int old_y = Console.CursorTop;
            string text = Console.ReadLine();
            int new_x = Console.CursorLeft;
            int new_y = Console.CursorTop;

            Console.SetCursorPosition(old_x, old_y);
            for (int i = 0; i < text.Length; ++i)
            {   
                Console.Write(' ');
            }
            Console.SetCursorPosition(new_x, new_y);

            //oder so wenn an die alte position gesprungen werden soll
            //Console.SetCursorPosition(old_x, old_y);

            Console.ReadKey();
        }

Re: [C#] problem mit ausgabe bei Konsolen Anwendung

Verfasst: 26.11.2010, 22:38
von Anno1503
Danke Jiba, das funktioniert einwandfrei ;)