如果有人可以提供帮助,我会很感激。
我在控制台中显示Stack内的所有驱动器:
public void ShowDrives()
{
foreach (FileSystemInfo f in stack)
Console.WriteLine(f);
}
Output:
C:\
E:\
现在,当我按下左箭头键时,我调用另一个方法,显示特定驱动器内的目录,并将此数据写入同一堆栈
public void ShowFiles(DirectoryInfo dif)
{
stack.Clear();
foreach (FileSystemInfo f in dif.GetFileSystemInfos())
{...} //show all files and directories and Write all inside the stack
}
但是我之前的驱动器输出仍然在控制台中,我需要以某种方式将其删除,并显示堆栈的新数据。
Output:
C:\
E:\
C:\file1.doc
C:\folder
etc...
我只需要获得
C:\file1.doc
C:\folder
etc...
不允许使用Console.Clear()
我会感激任何帮助!
答案 0 :(得分:0)
您是否希望彻底清除控制台?
Console.Clear();
...或者您是否只想覆盖某些行?
答案 1 :(得分:0)
您可以将光标移动到Console.SetCursorPosition
所需的行,只需使用Console.Write
或Console.WriteLine
覆盖该行的内容。
但是你应该记住,如果前一个输出的行数较大,或者前一个输出行的某些行长于后面的相应行,则可能会留下前一个输出....
我唯一建议的是记住所有这些长度并用空格覆盖这样的垃圾:
string oldoutput = "123";
Console.Write(oldoutput);
Console.ReadLine();
string newoutput = "!";
Console.SetCursorPosition(0, Console.CursorTop - 1);
Console.Write(newoutput);
int delta = oldoutput.Length - newoutput.Length;
if (delta > 0)
{
for (int i = 0; i < delta; i++)
Console.Write(" ");
}
Console.ReadLine();