2016-02-09 57 views
1

我正在更新大型數據庫中的1個字段。 因爲我想看看進度有多遠,所以我想在更新記錄時更新我的​​標籤。但是,這不起作用:他只在最後完成時更新它。文本(標籤)未更新(vb.net)

請注意,進度欄和更新工作正常,而且我沒有任何錯誤消息。任何想法?

Private Sub btnUpdateHeight_Click(sender As System.Object, e As System.EventArgs) Handles btnUpdateHeight.Click 
    dt = loadform() 
    ProgressBarTSLabels.Minimum = 0 
    Dim qty As Integer = 0 
    ProgressBarTSLabels.Value = 0 
    ProgressBarTSLabels.Maximum = dt.Rows.Count 
    Dim db As New DataClasses1DataContext 
    For Each Me.dr In dt.Rows 
     If dr.Item(5).ToString.Trim <> "" Then 
      Dim sqlupdate As tblLabel = (From expr In db.tblLabels Where expr.LabelID = dr.Item(0).ToString).First 
      With sqlupdate 
       .Height = If(dr.Item(5).ToString = "max", "999", dr.Item(5).ToString) 
       db.SubmitChanges() 
      End With 
     End If 
     ProgressBarTSLabels.Value += 1 
     qty += 1 
     lblQty.Text = qty & "/" & dt.Rows.Count 
    Next 
End Sub 

回答

2

只要在設置文本後調用Label.Refresh方法,這會強制標籤重繪。您也可以在進度條上調用Refresh方法,以使其工作順利。

... 
    ProgressBarTSLabels.Value += 1 
    qty += 1 
    lblQty.Text = qty & "/" & dt.Rows.Count 
    lblQty.Refresh      '<-- here 
    ProgressBarTSLabels.Refresh  '<-- and here 
Next 
+1

該死的,我不知道那個選項。 感謝您的快速響應! – GertDeWilde

+0

這是我見過的任何語言中最奇怪的事情之一......在標籤上調用Refresh()?哈哈..也非常需要..除非你在方法中的代碼運行後設置文本? (這與For循環無關btw)所以「設置info text>運行代碼更新數據網格視圖」所有在同一個方法中不會更新標籤,而是「運行代碼來更新數據網格視圖」集信息文本「不需要刷新()工作?這就是我的情況。在設置文本後調用Refresh()會在執行時起作用,這似乎並不必要,但顯然它在VB.NET中。 – whyoz