Вы можете рассмотреть возможность получения из элемента управления RichTextBox, как предложил Тигран.
В зависимости от того, что вы хотите, чтобы пользователь мог делать, вам придется добавить туда некоторую логику, которая ограничивает то, что он может и не может выбирать. (Например, если вы не хотите, чтобы они выбирали предыдущие команды). Вы можете получить выбранный текст через свойство SelectedText . А затем вставьте в свою собственную логику, например, Ctrl + C скопирует текст в переменную.
Вы можете рассмотреть возможность использования свойства MaximumSize
, чтобы старые команды были удалены после того, как консоль станет такой большой.
У Winforms уже есть тип автозаполнения, который вы можете использовать или просто сохранить список ключевых слов, и когда пользователь нажимает TAB
, введите первое слово в вашем списке, которое начинается с того, что они уже набрали.
Чтобы получить саму команду, а не какой-либо предыдущий текст, который был введен, вы, вероятно, захотите перенести все с последней строки до конца.
Код может выглядеть примерно так:
String allText = this.richTextBox1.Text; // All the text from the rich text box
Int32 lastIndex = allText.LastIndexOf("\n"); // Find the position of the last newline
String command = allText.Substring(lastIndex + 1); // Substring starting at the character after the last newline
И, конечно, когда пользователь нажимает RETURN
, команда будет отправлена на ваш код и выполнена.