Завершение вкладки консольного приложения .NET
Вопрос
Есть идеи о том, как реализовать завершение табуляции для консольного приложения .NET (C#)?Я имею в виду приложение, которое запускается, а затем циклически обрабатывает пользовательский ввод (например, если вы запускаете ftp.exe без каких-либо аргументов), например:
string line = string.Empty;
while (line != "exit")
{
//do something here
Console.ReadLine();
}
Я знаю, что, вероятно, на самом деле не смогу использовать readline, но мне бы хотелось иметь возможность завершать табуляцию в том же месте, где вы получаете ввод от пользователя.
Решение
Взгляните на этот код из проекта Mono.http://tirania.org/blog/archive/2008/Aug-26.htmlЯ играл с ним на днях.Он много редактирует командную строку, но я не думаю, что он завершает строку.
Другие советы
Выполните Console.ReadKey().
Если у вас есть вкладка, посмотрите, что у вас есть в буфере команд, и просмотрите доступные команды.Если someCommand.Name.BeginsWith(currentinput)
, у вас есть победитель, и вы можете написать на экран список возможных команд.
Если есть только один (ТМ) вы можете заменить его тем, что набрал пользователь :)
Я создал небольшую библиотеку, чтобы добавить эту функциональность в созданное мной приложение:
https://github.com/fjunqueira/hinter
Возможно, он не соответствует вашим потребностям, но вы можете его отредактировать.