我需要创建一个usercontrol“Console”。
我遇到了这样的问题:
如果我使用TextBox,如何防止删除已经招募的命令?
如果我使用ListBox / ListView,如何选择所有文本?
请告诉我从控制台做什么。
控制台应该能够完成命令(通过按Tab键),允许选择文本,并阻止输入已经建立的命令。
答案 0 :(得分:2)
答案 1 :(得分:1)
并努力限制这种组件的可能性以满足您的需求。
问候。
答案 2 :(得分:0)
您可以考虑从RichTextBox控件派生,如Tigran建议的那样。
根据您希望用户能够做什么,您必须在其中放置一些限制他们能够和不能选择的逻辑。 (例如,如果您不希望他们选择以前的命令)。您可以通过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
时,该命令将被发送到您的代码并执行。