Как писать в текущей строке консоли?

Я пишу консольное приложение, и мне нужно знать, как писать в текущей строке со сдвигом строк. Я попытаюсь объяснить это на следующем примере: пусть It консоль строк с их номерами и содержимым вместе с позицией курсора.

  1. Здравствуйте!
  2. Это моя командная оболочка.
  3. Пожалуйста, напишите что-нибудь: _

Когда я вызываю свой метод для записи в текст консоли "lalala", я хочу видеть, что:

  1. Здравствуйте!
  2. Это моя командная оболочка.
  3. Лалала
  4. Пожалуйста, напишите что-нибудь: _

Если я использую метод Console.WriteLine, я вижу следующее:

  1. Здравствуйте!
  2. Это моя командная оболочка.
  3. Пожалуйста, напишите что-нибудь: lalala
  4. _

Пожалуйста, помогите мне реализовать эту функцию.

7 ответов

Console.SetCursorPosition - это яд, который вы ищете. Подробнее о http://msdn.microsoft.com/en-us/library/system.console.setcursorposition.aspx


Поскольку вы не указали какой-либо код, я предполагаю, что вы используете Console.WriteLine("Please write something"); распечатать текст. Поскольку это добавит \n к тексту, который вы хотите распечатать, лучше использовать Console.Write("Please write something") затем выполните Console.ReadLine(); для ввода и обработки \n самостоятельно.


Console.WriteLine("1.Hello!");
Console.WriteLine("2.This is my command shell.");
Console.WriteLine("3.lalala");
Console.Write("4.Please write something:");
Console.Read();


попробуй что-нибудь вроде этого

Console.Write("Hello\nThis is My Command Shell\nlalala\nPlease Enter Something:___");

если курс, который закончится тем, что все они появятся в одно и то же время, но если ваше добро с этим будет работать

Будет выглядеть так


Если я правильно понимаю ваш вопрос, думаю, вам нужно использовать

Console.Write("text");

Это будет записываться в той же строке, что и текущий курсор.

Скорее, чем:

Console.WriteLine("text");

Это создаст новую строку в консоли при каждом ее вызове.


Пожалуйста, найдите код для вышеуказанного сценария:

private static void ReadAndWriteToConsole() { var mystrings = new List<string>(); mystrings.Add("Hello!"); mystrings.Add("This is my command shell."); var input = WriteToConsole(mystrings); while (input.ToLower() != "exit") { mystrings.Add(input); Console.Clear(); input = WriteToConsole(mystrings); } } private static string WriteToConsole(IEnumerable<string> variables ) { foreach (var str in variables) { Console.WriteLine(str); } Console.Write("Please write something:"); return Console.ReadLine(); }
</string></string>

Надеюсь, это поможет.

ПРИМЕЧАНИЕ. Если вы хотите, чтобы число каждой строки использовало цикл for вместо foreach и просто печатайте переменную, используемую в console.writeline.


Я понимаю, что это старый вопрос, однако я искал этот материал, и вот как он может быть закодирован:

Console.WriteLine("Hello!");
Console.WriteLine("This is my command shell.");
string text = "";
string toWrite = "Please write something: ";
while (text != "quit")
{ Console.Write(toWrite); text = Console.ReadLine(); Console.SetCursorPosition(0, Console.CursorTop - 1); Console.WriteLine(text.PadRight(text.Length + toWrite.Length));
}

Console.SetCursorPosition помещает курсор обратно в строку, которая была записана, а затем перезаписывает написанное с текстом и дополнением, эквивалентное тому, сколько символов было у текста.

licensed under cc by-sa 3.0 with attribution.