对于ListBox1中的每个项目执行某些操作,然后将项目添加到listbox2 vb

时间:2013-11-01 00:50:48

标签: vb.net loops foreach listboxitems

我制作了一个应用程序,将某些数字转换为其他格式 即

  
      
  • 1 = A
  •   
  • 2 = B
  •   
  • 3 = C
  •   
  • 4 = D
  •   
  • 5 = E
  •   
  • ETC
  •   

我已经完成了这个功能没有问题,我已经使用了很长一段时间了,但现在我想更快地批量做事。
因此,我很难从文本文件复制到Textbox1然后按button1然后将textbox2复制到其他文本文件。

所以我在考虑将文本文件加载到列表框中,然后对该列表中的每个项目进行循环,然后将其导出到另一个可以导出到另一个文本文件的列表中。

导入和导出我已经覆盖了它,但我坚持的是制作循环。

如果你知道一个更好的方法让我知道或者告诉我如何以这种方式修复它,那么这就是我所拥有的。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Using FD As New OpenFileDialog()
        FD.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
        If FD.ShowDialog = Windows.Forms.DialogResult.OK Then
            ListBox1.Items.Clear()
            ListBox1.Items.AddRange(IO.File.ReadAllLines(FD.FileName))
        End If
    End Using
End Sub


Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Do
    Dim Item As String = ""
    For Each i As String In ListBox1.Items
        Item &= i
        TextBox1.Text = Item
        TextBox2.Text = MYFUNCTION(TextBox1.Text)
        ListBox2.Items.Add(TextBox2.Text)
        TextBox1.Text = ""
        TextBox2.Text = ""
    Next
    Loop Until TextBox1.Text = "END"

End Sub

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    'TextBox2.Text = MeidHexToDec(TextBox1.Text)

    Using FD As New SaveFileDialog()
        FD.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
        If FD.ShowDialog = Windows.Forms.DialogResult.OK Then
            Dim FileContent As String = ""
            For Each i As String In ListBox2.Items
                FileContent &= i & vbCrLf
            Next
            IO.File.WriteAllText(FD.FileName, FileContent)
        End If
    End Using
End Sub

所以我的最终目标是做这样的事情:

TextFile1.txt

  
      
  • 1
  •   
  • 2
  •   
  • 5
  •   
  • 5
  •   
  • 1
  •   
  • 3
  •   
  • 2
  •   
  • END
  •   

然后转换输出

TextFile2.txt

  
      
  • A
  •   
  •   
  • 电子
  •   
  • 电子
  •   
  • A
  •   
  • C
  •   
  • B
  •   

文本文件大小会有所不同,有时只有10个项目有时会是50 ... 谢谢。

2 个答案:

答案 0 :(得分:5)

您根本不需要Do循环,您可以简化循环逻辑的其余部分,如下所示:

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    For Each i As String In ListBox1.Items
        ListBox2.Items.Add(MYFUNCTION(i))
    Next
End Sub

您不需要注意END标记,因为文件中的所有内容都已读入ListBox1.Items集合,因此一旦您遍历{{1}中的所有字符串值那么你就在文件的末尾。

ListBox1.Items逻辑返回从数字到字母的转换,因此只需将该函数的结果添加到MYFUNCTION即可。

答案 1 :(得分:-1)

Public Function Letr(N As Int16) As String
    Letr = Chr(N + 64)
End Function