【问题标题】:How to make a button do two things after the other如何让一个按钮一个接一个地做两件事
【发布时间】:2013-11-25 16:10:27
【问题描述】:

我是一名刚开始接触 Visual Basic 的新程序员,我正在尝试制作一部视觉小说,但遇到了一些问题。

我试图在按下按钮时将文本更改为下一行文本。这是我正在使用的一些示例代码。 “DisplayText”是包含语音的位置,“ButtonNext”是转到下一段文本的按钮。

Private Sub ButtonNext_Click(sender As Object, e As EventArgs) Handles ButtonNext.Click
    If DisplayText.Text = "" Then
        DisplayText.Text = "Test"
    End If
End Sub

这行得通。但是,我想要它,这样同一个按钮就可以在“测试”行之后转到另一行。我在同一个私人潜艇中使用了它:

If DisplayText.Text = "Test" Then
    DisplayText.Text = "Second Test"
End If

我没有收到任何错误,但是当我运行代码并按下按钮时,它会立即更改为最后一行。我知道为什么,我只是不知道任何代码(也找不到任何代码)关于如何使文本每次按下而不是一次全部转到下一行。

希望这是有道理的,我希望有办法做到这一点。谢谢大家的帮助!

【问题讨论】:

  • 下面的答案还不错。你也可以只翻转 if (先做第二个)。

标签: vb.net button text


【解决方案1】:

这将是您应该使用Case 语句而不是If 语句的主要示例。

Select Case DisplayText.Text

    Case ""
        DisplayText.Text = "Test"

    Case "Test"
        DisplayText.Text = "Second Test"

End Select

【讨论】:

  • 如果没有这个答案,我会很想这样发布我自己的答案。否则+1。另请注意,Case "": DisplayText.Text = "Test" 语法在 VB.NET 中是可能的(单行操作)。
  • @Neolisk 我想我习惯在 VB 中编写多行语句,因为我的同事通常发现它们比单行语句更容易阅读。但你是绝对正确的。
【解决方案2】:
Private Sub ButtonNext_Click(sender As Object, e As EventArgs) Handles ButtonNext.Click
    If DisplayText.Text = "" Then
        DisplayText.Text = "Test"
    Else If DisplayText.Text = "Test" Then
        DisplayText.Text = "Second Test"
    End If
End Sub

问题是您的 DisplayText 被更改为“测试”并立即进入下一个 If 语句,然后检查它是否为“测试”,哪个阶段为真。使用Else 语句可以防止这个问题。

【讨论】:

  • 谢谢!我一直在寻找这个几个小时!非常感谢
  • 为了表达您的感激之情,您可以对有帮助的答案进行投票,并将最有帮助的答案标记为已接受 :)
  • @user3033047:不要学习那样的坏习惯,最好看看 Douglas Barbin 的回答。
【解决方案3】:

您有两个 If 语句,如下所示:

If DisplayText.Text = "" Then

DisplayText.Text = "Test"

End If

If DisplayText.Text = "Test" Then

DisplayText.Text = "Second Test"

End If

第一个If 语句执行,将文本更改为“测试”。然后第二个If 语句执行:如果文本是“Test”,则将其更改为“Second Test”。所以如果你在文本框空白的情况下输入sub,它会变成“Test”,然后你还没看到它,它就会变成“Second Test”。

解决方法是使用Else If语句:

If DisplayText.Text = "" Then

DisplayText.Text = "Test"

Else If DisplayText.Text = "Test" Then

DisplayText.Text = "Second Test"

End If

如果第一个条件 (DisplayText.Text = "") 不成立,这只会进入第二个 If 语句。

【讨论】:

  • 非常感谢,我一直在寻找这个答案几个小时!谢谢!
【解决方案4】:

尝试在系统中使用线程来在文本更改之前暂停文本。

Private Sub ButtonNext_Click(sender As Object, e As EventArgs) Handles ButtonNext.Click
    If DisplayText.Text = "" Then
    DisplayText.Text = "Test"
End If

System.Threading.Thread.Sleep(1000)

If DisplayText.Text = "Test" Then
    DisplayText.Text = "Second Test"
End If
End Sub

【讨论】:

  • 我不确定这个答案是不是问题,结果仍然保持不变,稍后才会出现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-11
  • 1970-01-01
  • 2023-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多