C# 如何创建控制台用户控件

C# 如何创建控制台用户控件,c#,winforms,c#-2.0,C#,Winforms,C# 2.0,我需要创建一个用户控件“控制台” 我面临着这样的问题: 如果我使用文本框,我如何防止删除已招募的命令 如果使用ListBox/ListView,如何选择所有文本 请告诉我如何从控制台执行操作 控制台应能够完成命令(按Tab键),允许选择文本,并防止输入已建立的命令 如果您需要一些“简单”的控制台应用程序:插入命令(我想是某种DSL语言)、查看执行结果以及其他内容,您可以尝试在RichTextBox基础上编程,这也可以为内容提供一些样式 重用一些已经就绪(复杂)的编辑器,例如: 并努力限制这

我需要创建一个用户控件“控制台”

我面临着这样的问题:

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

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

请告诉我如何从控制台执行操作

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

  • 如果您需要一些“简单”的控制台应用程序:插入命令(我想是某种DSL语言)、查看执行结果以及其他内容,您可以尝试在RichTextBox基础上编程,这也可以为内容提供一些样式
  • 重用一些已经就绪(复杂)的编辑器,例如:
  • 并努力限制这种组件的可能性,以满足您的需求


    问候语

    < p>可以考虑从RigTeXBox控件派生,如提格朗建议的。

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

    您可以考虑使用<代码> MaximumSize <代码>属性,这样旧控制台在控制台变得如此庞大之后会被删除。

    Winforms已经有了一种自动完成功能,您可以使用它,也可以简单地保留一个关键字列表,当用户按下
    选项卡时,填写列表中以他们已经键入的内容开头的第一个单词

    要获取命令本身,而不是之前输入的任何文本,您可能需要获取从最后一个换行符到结尾的所有内容。 代码可能如下所示:

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

    这里是一个开始:

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