2017-05-06 67 views
-3

對於一個投資組合項目,我試圖創建一個使用Windows窗體的遊戲,並且我有這個問題,我似乎無法弄清楚,如何讓一個按鈕用於多個事件Visual Basic

我有一個遊戲畫面,要求用戶輸入問題的答案,然後點擊下一個按鈕來設置答案=一個變量或做某種行動,然後讓該按鈕也輸出下一個問題到列表框。

是否有一種突破我可以合併,這將使下一個listbox輸出等待按鈕點擊?如果是這樣,我怎麼會這樣做,我似乎無法找到任何有關它的任何地方。

Public Class frmGame 
    Public Sub frmGame_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' main game window, dim's variables 
     lstOutput.Items.Add("Please enter your name") 
    End Sub 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnNext.Click 'Next button, advances the game 
     lstOutput.ClearSelected() 
     Dim name As String = txtInput.Text 

     lstOutput.Items.Add("Are you a boy or a girl, enter the number of your choice") 
    End Sub 

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles btnNext.Click 'Next button, advances the game 
     lstOutput.ClearSelected() 
     Dim name As String = txtInput.Text 

     lstOutput.Items.Add("e") 
     Dim gender As String = txtInput.Text 
    End Sub 

    Private Sub btnReset_Click(sender As Object, e As EventArgs) Handles btnReset.Click 'clears textbox for user input 

    End Sub 

    Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click 
     Me.Close() 
    End Sub 
End Class 
+1

您爲同一個按鈕定義了兩個處理程序。它們在點擊時都會運行。目前還不清楚你想做什麼,但似乎它可能涉及一個大的'if ... else if ...'在代表程序中可能的步驟的唯一點擊處理程序,或者你附加的幾個處理程序,根據需要進行分離,或者根據您嘗試實現的交互類型切換到控制檯項目類型。 – GSerg

+0

我希望程序能夠提出問題,讓用戶在文本框中鍵入該問題的答案,然後點擊「下一步」按鈕,並出現一個新問題。我猜測做一個控制檯應用程序會更容易,因爲它會讓我在等待輸入的問題之間暫停一下 – ToastyMatt

回答

0

我希望該計劃能問一個問題,有用戶類型 的答案,在文本框中這個問題,然後點擊「下一步」按鈕 ,有一個新的問題出現

創建類,它代表的問答數據

Public Class Question  
    Public ReadOnly Property Text As String 
    Public Property Answer As String 

    Public Sub New(text As String) 
     Me.Text = text 
    End Sub 
End Class 

然後初始化的問題,並在收集點擊「下一步」按鈕移動整個問題集。

Public Class frmGame 
    Private _questions As List(Of Question) 
    Private _currentQuestionIndex As Integer = -1 

    Public Sub frmGame_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     _questions = Return New List(Of Question) From 
     { 
      new Question("Please enter your name"), 
      new Question("Question 1"), 
      new Question("Question 2"), 
      new Question("Last question") 
     } 

     MoveToNextQuestion() 
    End Sub 

    Private Sub ButtonNext_Click(sender As Object, e As EventArgs) Handles btnNext.Click 
     Dim currentQuestion = _questions[_currentQuestionIndex] 
     currentQuestion.Answer = txtInput.Text 

     If IsCurrentQuestionLast() Then 
      ProcessAnswers() 
     Else 
      MoveToNextQuestion() 
     End If 
    End Sub 

    Private Sub MoveToNextQuestion() 
     _currentQuestionIndex += 1 

     txtInput.Text = Stirng.Empty 
     txtQuestionText.Text = _questions[_currentQuestionIndex] 
    End Sub 

    Private Function IsCurrentQuestionLast() 
     Return _currentQuestionIndex = _questions.Count - 1 
    End Function 

    Private Sub ProcessAnswers() 
     For Each question In _questions 
      ' Do something with question.Answer 
     Next 
    End Sub 
End Class 
相關問題