Удаление символов, написанных методом Console.Write - PullRequest
2 голосов
/ 02 апреля 2012
static void f_WriteIpAddresses()
{
    IPHostEntry host;
    string localIP = "?";
    host = Dns.GetHostEntry(Dns.GetHostName());
    foreach (IPAddress ip in host.AddressList)
    {
        Console.Write(ip.ToString());
        Console.Write(" - ");
    }
}

static void Main(string[] args)
{
    Console.WriteLine("Your IP Address:")
    WriteIpAddresses();
    Console.Write("[You can delete/modify address]");
    string ip = Console.ReadLine();
}

Я хочу найти все адреса и написать в строке, где пользователь может удалить до нужного адреса или изменить строку.

c:\>address.exe
Your IP Address:
192.168.1.13 - 10.10.2.15 [You can delete/modify address]

Ответы [ 2 ]

3 голосов
/ 02 апреля 2012

Проверьте этот пост, он объясняет, как очистить части консоли.Таким образом, вы также можете установить курсор консоли в том месте, где вы хотите, чтобы позволить пользователю перезаписывать определенные части в консоли.См. c-sharp-console-console-clear-problem

Эта публикация также может быть очень удобной, очень похожей проблемой.

0 голосов
/ 02 апреля 2012

Вы можете сделать что-то вроде добавления \ r в конец последнего console.write, чтобы получить курсор в начале строки.

Затем прочитайте ваш ввод и объедините новый ввод с исходным выводом. Поскольку ваша readline только читает новые данные, вы должны добавить (перезаписать) эти новые данные в ваши исходные данные.

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;

namespace ConsoleApplication3
{
    class Program
    {
        static string f_WriteIpAddresses()
        {
            IPHostEntry host;
            string localIP = "?";
            string retVal = "";
            host = Dns.GetHostEntry(Dns.GetHostName());
            foreach (IPAddress ip in host.AddressList)
            {
                if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                {
                    Console.Write(ip.ToString());
                    Console.Write(" - ");
                    retVal = ip.ToString() + " - "; 
                }
            }
            return retVal;
        }

        static void Main(string[] args)
        {
            Console.WriteLine("Your IP Address:");
            string oldip = f_WriteIpAddresses();
            Console.Write("[You can delete/modify address]\r");
            string ip = Console.ReadLine();

            string newip = ip + oldip.Substring(ip.Length);
        }
    }
}

Приведенное выше должно дать новый IP-адрес, но имеет ограничения, такие как, работает только для одной строки и т. Д.

...