2016-02-09 2 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() на ярлыке? haha..totally need too..если вы не устанавливаете текст после того, как код в методе запускается? (Это не связано с целыми циклами только btw). Таким образом, «установить информационный текст» запустите код, чтобы обновить представление сетки данных »все в том же методе не будут обновлять метку, а« запустить код для обновления вида сетки данных » info text "работает без необходимости обновления()? Это то, что происходило в моем случае. Вызов Refresh() после установки текста работает всякий раз, когда он выполняется, что просто не представляется необходимым, но, по-видимому, оно находится в VB.NET. – whyoz

Смежные вопросы