Внедрение значения по умолчанию в Console.ReadLineC#

Место общения программистов C#
Ответить
Anonymous
 Внедрение значения по умолчанию в Console.ReadLine

Сообщение Anonymous »

У меня есть консольное приложение (.NET 9 C#), которое принимает несколько значений от пользователя и обрабатывает их по одному вводу за раз.
Подсказки:

Код: Выделить всё

Enter your Query: []{SELECT * FROM Product}
Narrow Query: [WHERE Product.Price > ] {10}
Narrow Query: [AND Product.Price < ] {90}
В приведенном выше примере следует предположить следующее:
  • Каждая строка инициируется последовательностью Console. Напишите, а затем Console.ReadLine.
  • Любые фигурные скобки (квадратные или фигурные) являются только иллюстрациями (для пояснения контекста). Они не будут отображаться во время взаимодействия.
  • Весь текст до двоеточия включительно: записывается в консоль с помощью Console.Write и не может быть отредактирован с помощью пользователь. Именно тогда в идеале следует вызывать Console.ReadLine.
  • Любой текст внутри фигурных скобок, включая фигурные скобки, вводится пользователем.
  • Любой текст в квадратных скобках необходимо каким-то образом вставить в приглашение и сделать его доступным для редактирования, как если бы пользователь ввел его до нажатия клавиши Enter.
Я использовал консольные потоки In и Out раньше, но я не уверен, можно ли их использовать в этом сценарии. Есть ли способ вызвать Console.ReadLine, предоставляя пользователю значение по умолчанию для редактирования?
Хотя я, конечно, не хочу использовать такой механизм, как System.Windows .Forms.SendKeys, я открыт для подхода, который не требует, чтобы консоль имела фокус, и использует такой механизм, как PostMessage, с использованием известного дескриптора окна (hWnd). Не уверен, возможно ли это с помощью консольного приложения. При поиске многие пользователи не одобряли такие подходы как ненадежные по своей сути.
Обратите внимание, что этот вопрос касается исключительно Console.ReadLine, поскольку я не хочу использовать другие механизмы, такие как Read, ReadKey(intercept), KeyAvailable и т. д. Написание цикла ввода было бы слишком громоздким (работа с ConsoleKeyInfo и т. д.) для моего цель.
Любые указания на надежный подход будут приветствоваться.

Подробнее здесь: https://stackoverflow.com/questions/792 ... e-readline
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»