2016-04-14 4 views
0

これまでのコードです。私の教授は、私はハードコーディングができないと言った。ボタンクリックイベントでループを手伝ってもらえますか? [次へ]ボタンをクリックすると、右のフラッシュ形式は、それが読み込まれたファイルのパスを示してロードし、プルアップ第一項及び定義をテキストファイルではなくなります。ボタンを使用して一度に1つずつ配列を循環させる方法

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 
関連する問題