2016-04-14 4 views
0

Это мой код. Мой профессор сказал, что я не могу жестко закодировать. Не могли бы вы помочь мне с циклом под событием нажатия кнопки. Правая форма флэш будет загружать и подтянуть первый член и определение в текстовых файлах, но при нажатии на кнопку Далее, она показывает путь к файлу, который был считан в.Как перемещаться по массиву по одному с помощью кнопки

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 
Смежные вопросы