PictureBox未显示在按钮单击事件上

时间:2016-08-17 18:59:57

标签: vb.net winforms

我在按钮点击事件中使用PictureBox。单击按钮时,我启用了PictureBox,我正在运行一个长数据库调用,在进程结束时,我正在尝试禁用PictureBox。在PictureBox内部,我有一个加载GIF。

但我不知道发生了什么。我的PictureBox没有显示..

请建议我该如何解决这个问题。我试过Thread.Sleep(1000),但它没有用。

Private Sub btnRetrieve_Click(sender As Object, e As EventArgs) Handles btnRetrieve.Click
    Me.PictureBox1.Visible = True
    lblSuccess.Text = Nothing
    UltraNumberOfConveyance.Value = Nothing
    GetData() --Long Running Query
    Me.PictureBox1.Visible = False
End Sub

我的GetData功能:

Private Function GetData()
        dsCheckPointTimes = GetCheckPointTimesByTerminalID()
        dtDataTable = dsCheckPointTimes.Tables(0)
        chkdtDataTable = dsCheckPointTimes.Tables(1)

        If Not DBNull.Value.Equals(chkdtDataTable.Rows.Item(0).Item("ConveyanceName")) Then
            lblConveyanceNameText.Text = chkdtDataTable.Rows.Item(0).Item("ConveyanceName").ToString()
        End If

        If Not DBNull.Value.Equals(chkdtDataTable.Rows.Item(0).Item("NumberOfConveyance")) Then
            UltraNumberOfConveyance.Value = chkdtDataTable.Rows.Item(0).Item("NumberOfConveyance")
        End If

        If Not DBNull.Value.Equals(chkdtDataTable.Rows.Item(0).Item("Dock")) Then
            UltratxtChangeLabel1.Value = chkdtDataTable.Rows.Item(0).Item("Dock")
        End If

        If Not DBNull.Value.Equals(chkdtDataTable.Rows.Item(0).Item("Lines")) Then
            UltratxtChangeLabel2.Value = chkdtDataTable.Rows.Item(0).Item("Lines")
        End If

        If Not DBNull.Value.Equals(chkdtDataTable.Rows.Item(0).Item("CHECKPOINTTYPE")) Then
            SetFields(chkdtDataTable.Rows.Item(0).Item("CHECKPOINTTYPE"))
        End If


        If dtDataTable.Rows.Count > 0 Then
            LoadFlow()
        Else
            lblSuccess.Text = "No Records Found! Please check the ordernumber"
            lblSuccess.ForeColor = Color.Red
        End If
        Return Nothing
    End Function

1 个答案:

答案 0 :(得分:1)

使用BackgroundWorker执行此操作:

Private WithEvents bgw As New BackgroundWorker

Private Sub btnRetrieve_Click(sender As Object, e As EventArgs) Handles btnRetrieve.Click
  PictureBox1.Visible = True
  bgw.RunWorkerAsync()
End Sub

Private Sub bgw_DoWork(sender As Object, e As DoWorkEventArgs) Handles bgw.DoWork
  GetData() --Long Running Query
End Sub

Private Sub bgw_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles bgw.RunWorkerCompleted
  PictureBox1.Visible = False
End Sub