2016-04-14 67 views
0

这是迄今为止我的代码。我的教授说我不能硬编码。你可以请帮助我在按钮点击事件下的循环。对的。因为你正在使用的Flash格式将加载并拉起第一项和定义的文本文件,但是当您单击下一步按钮它表明已被读取的文件的路径。如何使用按钮一次一个地循环阵列

Public Class frmFlash 

    Private _intSizeOfArray As Integer = 3 
    Private _strLocationOfTerms(_intSizeOfArray) As String 
    Private _strLocationOfDefinitions(_intSizeOfArray) As String 
    Private _objReader As IO.StreamReader 
    Private _strTerms As String 

    Private Sub frmFlash_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     Dim objReader As IO.StreamReader 
     Dim strLocationOfTerms As String = "C:\Users\boone\Desktop\Terms.txt" 
     Dim strLocationOfDefinitions As String = "C:\Users\boone\Desktop\Definitions.txt" 
     Dim intTermArray(4) As Integer 
     Dim intCount As Integer 

     lblDefinition.Visible = False 

     If IO.File.Exists(strLocationOfTerms) Then 
      objReader = IO.File.OpenText(strLocationOfTerms)  
      _strTerms = objReader.ReadLine()  
      lblTerm.Text = _strTerms  
     End If 

     If IO.File.Exists(strLocationOfDefinitions) Then 
      objReader = IO.File.OpenText(strLocationOfDefinitions) 

      strLocationOfDefinitions = objReader.ReadLine() 

      objReader.Close() 
      lblDefinition.Text = strLocationOfDefinitions 
     End If 
    End Sub 

    Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click 
     Dim objReader(_intSizeOfArray) As IO.StreamReader 
     Dim intCount As Integer = 0 
     Dim strTermArray As String 
     Dim strLocationOfTerms As String = "C:\Users\boone\Desktop\Terms.txt" 
     Dim strLocationOfDefinitions As String = "C:\Users\boone\Desktop\Definitions.txt" 

     Do While intCount <= _intSizeOfArray 
      lblTerm.Text = strLocationOfTerms(_strTerms) 
      lblDefinition.Text = strLocationOfDefinitions 
      intCount += 1  
     Loop 
    End Sub 

    Private Sub btnDefinition_Click(sender As Object, e As EventArgs) Handles btnDefinition.Click 
     lblDefinition.Visible = True 
    End Sub 
End Class 

回答

2

数组,最简单的方法是完全跳过按钮处理程序中的处理。在Load事件中加载你的阵列,只需为他们获取一个IEnumerator

'In Class level declarations 
Private _termsEnumerator As IEnumerator(Of String) 
Private _defsEnumerator As IEnumerator(Of String) 

Private Sub frmFlash_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    'Your other initialization code... 
    '... 
    'Load your _strLocationOfTerms and _strLocationOfTerms here. 
    _termsEnumerator = _strLocationOfTerms.GetEnumerator() 
    _defsEnumerator = _strLocationOfDefinitions.GetEnumerator() 
End Sub 

然后,它只是从阵列抓住下一个项目一样简单(它们实现IEnumerable):

Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click 
    If _termsEnumerator.MoveNext() And _defsEnumerator.MoveNext() Then 
     lblTerm.Text = _termsEnumerator.Current 
     lblDefinition.Text = _defsEnumerator.Current 
    End If 
End Sub