http://student.csdn.net/space.php?uid=116484&do=blog&id=38988
原题如上:
我用的是VB.NET 2010,文件时我自己写的高达450K的LISTBOX表。VB显示的行数是11万行左右....
以下是我的源代码加注释,有注释我就不另外补充了。
需要控件:listbox x1 ,label x5 ,button x1。
源代码:
- Imports System.IO
- Imports Microsoft.VisualBasic.FileIO
- Public Class Form1
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- '初始化数据。或者说我懒得设置属性
- Label1.Text = "0"
- Label2.Text = "0"
- Label3.Text = "0"
- Label4.Text = "0"
- Label5.Text = "0"
- End Sub
- Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
- '线程1,主要应付低档文件,本程序中忽略掉 - 笔者用来测试的
- For index = 1 To ListBox1.Items.Count - 1
- Label1.Text = Int(Label1.Text) + ListBox1.Items(index)
- Next
- End Sub
- Private Sub BackgroundWorker2_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker2.RunWorkerCompleted
- '线程2
- For index = 1 To Int(ListBox1.Items.Count / 4 * 1) '智能分段
- Label2.Text = Int(Label2.Text) + ListBox1.Items(index)
- Next
- End Sub
- Private Sub BackgroundWorker3_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker3.RunWorkerCompleted
- For index = Int(ListBox1.Items.Count / 4 * 1) To Int(ListBox1.Items.Count / 4 * 2)
- Label3.Text = Int(Label3.Text) + ListBox1.Items(index)
- Next
- End Sub
- Private Sub BackgroundWorker4_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker4.RunWorkerCompleted
- For index = Int(ListBox1.Items.Count / 4 * 2) To Int(ListBox1.Items.Count / 4 * 3)
- Label4.Text = Int(Label4.Text) + ListBox1.Items(index)
- Next
- End Sub
- Private Sub BackgroundWorker5_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker5.RunWorkerCompleted
- For index = Int(ListBox1.Items.Count / 4 * 3) To Int(ListBox1.Items.Count - 1)
- Label5.Text = Int(Label5.Text) + ListBox1.Items(index)
- Next
- Label1.Text = Int(Label2.Text) + Int(Label3.Text) + Int(Label4.Text) + Int(Label5.Text)
- End Sub
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- '读文件到listbox1
- Dim filename As String = "C:/1.txt"
- Dim delimiter As String = ","
- Using parser As New TextFieldParser(filename)
- parser.SetDelimiters(delimiter)
- While Not parser.EndOfData
- ListBox1.Items.Add(parser.ReadLine)
- End While
- End Using
- Select Case ListBox1.Items.Count '智能化判断
- Case Is <= "10000"
- '启动线程
- BackgroundWorker1.RunWorkerAsync()
- Case Is > "10000"
- BackgroundWorker2.RunWorkerAsync()
- BackgroundWorker3.RunWorkerAsync()
- BackgroundWorker4.RunWorkerAsync()
- BackgroundWorker5.RunWorkerAsync()
- End Select
- End Sub
- End Class