c# Console.WriteLine Text löschen?


22.05.2022, 09:43

asdad


22.05.2022, 09:45

nach dem Meditate in dem if statemant aufgerufen wird, kommt CastSpell() und darunter ist ja ein Text. Ich will , dass in der CastSpell methode der Text ausgeblendet wird und der darunter angezeigt wird, aber beim ausblenden des textes in CastSpell()soll nur in diesen einen if statement stattfinden

regex9  21.05.2022, 22:01

Wenn du schon unbedingt Bilder teilen musst, dann sorge doch zumindest dafür, dass sie groß genug sind, sodass der Text auf ihnen auch lesbar ist.

FatihBtw 
Fragesteller
 22.05.2022, 09:34

man sieht sonst nicht den gesamten code und man kann doch zoomen ,aber hast recht, hätte noch grösser machen können

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Console.Clear() ist keine gute Idee, wenn es um das überschreiben eine speziellen Zeile geht, da es den gesamten Fensterbuffer löscht.

Besser den Consolencursor an den Beginn der entsprechenden Zeile positionieren und diese gezielt überschreiben. Dabei nicht mit Leerzeichen am Ende des überschreibenden Strings geizen. (für die Consoleausgabe sind Leerzeichen quasi "Nichts")

using System;
using System.Threading;
class Prog{
    public static void Main(string[] args){
        Console.WriteLine("Ich werde in 2 Sekunden überschrieben");
        Thread.Sleep(2000);
        Console.SetCursorPosition(0, 0);
        Console.WriteLine("falsch, nicht komplett...");
        Thread.Sleep(2000);
        Console.SetCursorPosition(0, 0);
        Console.WriteLine("ups...                                             ");  //mit reichlich Spaces überschreiben
        Console.ReadKey();
    }
}

FatihBtw 
Fragesteller
 22.05.2022, 09:41

und wo soll ich das bei meinem beispiel hintuen

0
Erzesel  22.05.2022, 10:15
@FatihBtw

Ich bin leider nur mit dem Smartphone und habe keine Möglichkeit den Inhalt von Bilden zu analysieren.

und man kann doch zoomen ,aber hast recht, hätte noch grösser machen können

..nicht größer machen, sondern Code in einen Codeblock (</>) einfügen oder umfangreichen Code als link auf einen Codehoster wie Pastebin.

SetCursorPosition(x,y) gehört vor WriteLine(...) ...ist doch aus meinem Beispiel ersichtlich .🤔 (in welcher Zeile Dein Text ausgegeben werden soll musst du schon selbst wissen)

Einen Cursor an eine bestimmte Position in der Console zu platzieren ist ja nun kein Hexenwerk. Zu erfassen, was meine Demo tut ist ja nun absoluter Anfängerlevel...( zumal ich Spaggetticode geschrieben habe)

0
FatihBtw 
Fragesteller
 22.05.2022, 11:19
@Erzesel

Du verstehst mein Problem nicht ganz ich will, dass der Text nur das eine mal ausgeblendet wird wenn das if statement true ist, damit nicht der Text erscheint sondern ein anderer der darunter ist

0
Erzesel  22.05.2022, 16:54
@FatihBtw

Deine Frage lautet:

Console.WriteLine Text löschen?

Da Du keine vernünftige Darstellung des von Dir verwendeten Codes lieferst, kann ich aus den mir ersichtlichen Teilen der Fragestellung lediglich zu dem Schluss kommen, dass Du eine bestehende Zeile verschwinden lassen/überschreiben möchtest.

In Zukunft verwende einfach eine geeignetere Art der Weitergabe von Code.

Eine bedingte Ausgabe von Text (wie sie @regex9 zelebriert), gehört zum kleinen 1×1 des Programmierens und sollte eigentlich keiner Frage Wert sein.

0
FatihBtw 
Fragesteller
 22.05.2022, 09:47

hab die frage oben ergänzt und genau beschrieben was ich will, hoffe , dass du mir helfen kannst

0

Ich würde der Methode einen Parameter spendieren, meinetwegen auch mit einem Standardwert. Dieser bestimmt, ob die Ausgabe stattfinden soll oder nicht.

public void CastSpell(bool printAndCastsText = true)

Die Ausgaben, die abhängig von dessen Wert ausgegeben werden sollen oder nicht, kommen in ein if:

if (printAndCastsText)
{
  // print text ...
}

FatihBtw 
Fragesteller
 22.05.2022, 12:44

ok danke

0

Wenn ich es richtig verstehe, willst du bestimmte Dinge aus der Console löschen? Da geht dann nur Console.Clear() oder (Da habe ich den genauen Namen nicht im Kopf) Set Cursor oder so. Da kann man den Cursor in eine bestimmte Zeile tun und diese überschreiben