1

我正在编写一个控制台应用程序,我需要知道如何在当前行中通过换行写入。我尝试在下一个示例中解释这一点:让它控制台行及其编号和内容以及光标位置。

  1. 你好!
  2. 这是我的命令外壳。
  3. 请写点东西:_

当我调用我在控制台文本“lalala”中写入的方法时,我想看到:

  1. 你好!
  2. 这是我的命令外壳。
  3. 拉拉拉
  4. 请写点东西:_

如果我使用 Console.WriteLine 方法,我会看到下一个:

  1. 你好!
  2. 这是我的命令外壳。
  3. 请写点东西:lalala
  4. _

请帮我实现这个功能。

4

7 回答 7

3

由于您没有提供任何代码,我假设您正在使用Console.WriteLine("Please write something");它来打印文本。由于这会将 \n 添加到您要打印的文本中,因此您应该使用Console.Write("Please write something")然后执行 anConsole.ReadLine();来获取输入并自己处理 \n。

于 2012-01-24T10:24:59.140 回答
3

Console.SetCursorPosition 是您要寻找的毒药。有关http://msdn.microsoft.com/en-us/library/system.console.setcursorposition.aspx的更多详细信息

于 2012-01-24T10:25:19.997 回答
2
Console.WriteLine("1.Hello!");
Console.WriteLine("2.This is my command shell.");
Console.WriteLine("3.lalala");
Console.Write("4.Please write something:");
Console.Read();
于 2012-01-24T10:23:44.897 回答
1

请找到上述场景的代码:

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();
    }

希望有帮助。

注意:如果您想要每个字符串的编号,请使用 for 循环而不是 foreach 并打印 console.writeline 中使用的变量。

于 2012-01-24T10:50:10.480 回答
1

如果我正确理解您的问题,我认为您需要使用

Console.Write("text"); 

这将写在光标当前所在的同一行上。

而不是:

Console.WriteLine("text");

这将在每次调用时在控制台中创建一个新行。

于 2012-01-24T10:29:40.820 回答
1

尝试这样的事情

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

如果当然最终会使它们同时出现,但是如果您对此感到满意,那么这将起作用

看起来像这样

控制台应用程序

于 2012-02-11T17:35:17.220 回答
0

我意识到这是一个老问题,但是我一直在搜索这些东西,下面是它的编码方式:

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 将光标放回写入的行,然后用文本覆盖写入的内容,并使用相当于文本有多少字符的填充。

于 2014-12-12T14:04:16.320 回答