'过程一
Dim ThreadStart As New ThreadStart(AddressOf DispProessBar)
Dim myThread As New Threading.Thread(ThreadStart)
  myCmd.CommandText = StrSql
  myReader = myCmd.ExecuteReader()
  myThread.Start()
  While (myReader.Read())
  row = Me.myTable.NewRow()
  row("登录号") = myReader("登录号")
  row("书名") = myReader("书名")
  row("特藏号") = myReader("特藏号")
  row("状态") = myReader("状态")
  row("馆藏地") = myReader("馆藏地")
  row("书目号") = myReader("书目号")
  Me.myTable.Rows.Add(row)
  Threading.Thread.Sleep(0)
End While
MessageBox.Show("yes")
_________________________________________
Private Sub DispProessBar()
  Dim i As Int64
  For i = 0 To 10000000
    Me.Label1.Text = i
    Threading.Thread.Sleep(10)
  Next
End Sub以上的执行结果,不是添加DataRow边更新Label1.Text的值(+1),而是在显示"yes"之后,Label1.Text开始更新。如果此时点确定(显示"yes"的对话框),则程序出错。如何能做到一边从DataReader添加DataRow,一边更新Label1.Text的值呢?

解决方案 »

  1.   

    http://www.syncfusion.com/FAQ/WinForms/FAQ_c41c.asp#q894q
      

  2.   

    我觉得你可以用它的重画来自己把它写成一个进度条.
    当然你可以向它里面加一个进度条,比如如下就可以了:
    ProgressBar p = new ProgressBar();
    p.Size = new Size(100,this.statusBar1.Height-2);//100,可-2都可以按自己的所需来定
    p.Location = new Point(50,1); //50这个数可以来自己按所需定
    p.Visible = true;
    p.Maximum = 100;//自己可以来按需所定
    p.Minimum = 0;  //自己可以来按需所定
    p.Value = 20;//只是一个测试用的数值
    this.statusBar1.Controls.Add(p);//添加到状态条里面.