Завершение вкладки "Консольное приложение .NET"

Любые идеи о том, как реализовать завершение табуляции для консольного приложения .NET (C#)? И я имею в виду приложение, которое запускается, а затем зацикливается на вводе пользователем (например, если вы запускаете ftp.exe без каких-либо аргументов), например:

        string line = string.Empty;
        while (line != "exit")
        {
            //do something here
            Console.ReadLine();
        }

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
16
0
5 684
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Взгляните на этот код из проекта Mono http://tirania.org/blog/archive/2008/Aug-26.html Я как-то играл с ним. Он выполняет много редактирования командной строки, но я не думаю, что он выполняет завершение строки.

Сделайте Console.ReadKey ().

Если вы получили вкладку, посмотрите, что у вас есть в буфере команд, и прокрутите доступные команды. Если someCommand.Name.BeginsWith(currentinput), у вас есть победитель, и вы можете написать на экран список возможных команд.

Если есть только один (TM), вы можете заменить его тем, что набрал пользователь :)

использование readkey не может быть вызвано параллельно с readline, не так ли? поэтому это означает, что вы теряете функциональность readline, и вам нужно перебирать readkey и добавлять / отображать вручную вводимые данные. Readline имеет функцию вызова истории с помощью клавиши «вверх», вы потеряете ее или вам придется полностью перекодировать ее с помощью клавиши read. Лучше всего для c14n найти гибридное решение. (например, использование строки чтения Async?)

v.oddou 02.07.2015 05:59

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

https://github.com/fjunqueira/hinter

Это может не соответствовать вашим потребностям, но вы можете смело редактировать его.

https://github.com/tonerdo/readline - это то, что вам нужно. отличная библиотека, доступная в виде nuget от талантливого разработчика tonerdo.

Ссылка на решение приветствуется, но убедитесь, что ваш ответ полезен и без нее: добавить контекст вокруг ссылки, чтобы ваши коллеги-пользователи имели некоторое представление о том, что это такое и почему оно есть, а затем процитируйте наиболее релевантную часть страницы, на которую вы ссылаетесь. если целевая страница недоступна. Ответы, которые представляют собой не более чем ссылку, могут быть удалены.

Alessio 19.07.2019 20:02

Другие вопросы по теме