如何创建控制台用户控制

本文关键字:控制台 用户 控制 创建 何创建 | 更新日期: 2023-09-27 18:01:53

我需要创建一个用户控件"Console"。

我面临着这样的问题:

  • 如果我使用一个文本框,我如何防止删除一个已经招募的命令?

  • 如果我使用ListBox/ListView,我如何选择所有的文本?

请从控制台告诉我该怎么做。

控制台应该能够完成命令(通过按Tab键),允许选择文本,并防止输入已经建立的命令。

如何创建控制台用户控制

开头:

http://ansiconsole.codeplex.com

我使用位图,并渲染文本给它。这样我就可以完全控制输入和输出。

  1. 如果你需要一些"简单"的控制台应用程序:插入命令,我假设在一些DSL语言,查看执行结果,和其他东西,你可以尝试在RichTextBox基础上编程,这也可以给一些样式的内容。
  2. 重用一些已经准备好的(复杂的)编辑器,例如:
闪烁

并努力限制这种组件的可能性,以满足您的需求。

问候。

你可以考虑从RichTextBox控件派生,就像Tigran建议的那样。

根据您希望用户能够做什么,您将不得不在那里放置一些逻辑来限制他们可以选择和不可以选择的内容。(例如,如果您不希望它们选择以前的命令)。你可以通过SelectedText属性获得他们选择的文本。然后放入您的自定义逻辑,例如,Ctrl+C将文本复制到一个变量中。

您可以考虑使用MaximumSize属性,以便在控制台变得如此大时将旧命令擦除。

Winforms已经有一种自动补全功能,你可以使用,或者简单地保存一个关键字列表,当用户按下TAB时,在你的列表中以他们已经输入的单词开头的第一个单词填充。

要获取命令本身,而不是之前输入的任何文本,您可能需要获取从LAST换行符到末尾的所有内容。代码可能看起来像这样:

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时,命令将被发送到您的代码并执行。