制作终端的问题

时间:2016-10-10 00:38:28

标签: vb.net

我在VB.net中编写终端代码,当我输入'help'并按回车键时,没有任何反应。它应该显示'这是唯一的命令。 :P”

我似乎没有更具体,所以让我解释一下发生了什么。

我输入下面的代码,我执行了应用程序,然后输入了'help'然后我点击了回车键,然后没有任何事情发生在所有。

以下是整个代码:

Private Sub RichTextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles RichTextBox1.KeyPress
    Dim lines = RichTextBox1.Lines
    Dim num = lines
    Dim textlength = RichTextBox1.TextLength

    If Asc(e.KeyChar) = 13 Then
        If num.Last.ToString() = "help" Then
            RichTextBox1.AppendText("This is the only command. :P\r\n")
        End If
    End If
End Sub

请帮忙!

3 个答案:

答案 0 :(得分:2)

所以,在你的代码上附加了一个调试器,很明显问题是什么......当你进行比较时,lines.Last()是一个空字符串。

有很多方法可以获得倒数第二行。我更喜欢LINQ,所以这里是你的代码整理,使用案例和文化不敏感的字符串比较(所以你也可以输入Help)...

Private Sub RichTextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles RichTextBox1.KeyPress
    If Asc(e.KeyChar) = 13 Then
        If String.Equals(RichTextBox1.Lines.Reverse.Skip(1).First(),
                         "help",
                         StringComparison.InvariantCultureIgnoreCase) Then
            RichTextBox1.AppendText(String.Format("This is the only command. :P{0}", Environment.NewLine))
        End If
    End If
End Sub

我还使用Environment.NewLine使您的代码更具可移植性,并String.Format()以不会无缘无故地占用内存的方式组合字符串。这个例子有点过分,但它显示了应该如何完成。

值得注意的是,使用调试器对于任何开发人员来说都是一项至关重要的技能(好吧,有一种替代方法是广泛的日志记录,但您需要知道这两种方法)。您将需要此技能来解决任何问题。

如果您不熟悉这个概念,调试就像暂停您的程序并让您检查正在发生的事情,然后一次运行一个命令来查看程序正在做什么。

答案 1 :(得分:0)

这不是一个真正的答案,但我注意到您正在编写代码以错误地创建新行

你这样做了:

RichTextBox1.AppendText("This is the only command. :P\r\n")

虽然它应该是这样的:

RichTextBox1.AppendText("This is the only command. :P" & vbCrLf)

答案 2 :(得分:0)

尝试使用代码并删除

domainsRight[rIndex][cIndex]

并设置这行代码

 If num.Last.ToString() = "help" Then
 End If

工作正常。

希望这有帮助。