2013-11-23 55 views
3

我在窗體上運行以下子郵件。子操作可能需要一段時間才能運行,因此我想將光標更改爲沙漏並在代碼運行時顯示「請稍候」消息。這裏是我的方法:顯示沙漏或請等待子郵件運行

Public Sub GoToSheets(sheetName As String) 

'This sub is used to open the workbook on the selected sheet. 
'This checks to see if Excel workbook is opened, if not it 
'opens Excel, the workbook and then the selected sheet. If the workbook is 
'opened, it goes to the selected sheet. 

'@param sheetName, sheet to be displayed 

Try 
    'get an existing excel.application object 
    xlApp = CType(GetObject(, "Excel.Application"), Application) 
Catch ex As Exception 
    'no existing excel.application object - create a new one 

    xlApp = New Excel.Application 

End Try 

Dim xlWBName As String = "2011.1004.Compensation Template" 
Dim xlBookPath As String = Path.Combine(Directory.GetCurrentDirectory()) 

xlApp.Visible = True 

Try 
    'get the opened workbook 
    xlBook = xlApp.Workbooks(xlWBName & ".xlsx") 
Catch ex As Exception 
    'open it 
    xlBook = xlApp.Workbooks.Open(xlBookPath & "\" & xlWBName & ".xlsx") 
End Try 

Try 

    xlSheet = CType(CType(xlBook.Sheets("summarySheet"), Excel.Worksheet), Excel.Worksheet) 
    Dim strChckRange As String = xlSheet.Range("A2").Value 

    If strChckRange Is Nothing Then 

     Dim frmClientInfo As New frmClientInformation 
     frmClientInfo.ShowDialog() 

     closeXLApp() 

    Else 


     xlSheet = CType(CType(xlBook.Sheets(sheetName), Excel.Worksheet), Excel.Worksheet) 


     'close the navigation instance on the welcome page 
     frmNavigation.Close() 
     'activate requested sheet 
     xlSheet.Activate() 
     'display as dashboard 
     DashboardView() 

     System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp) 

     GC.Collect() 
     GC.WaitForPendingFinalizers() 
     GC.Collect() 
     GC.WaitForPendingFinalizers() 

     frmWelcomePage.Hide() 
     chkForm() 

    End If 

Catch ex As Exception 

End Try 

末次

我已經做了這方面的一些研究,但至今沒有爲Visual Basic。

回答

3

我建議創建一個PleaseWaitForm在其上有Please Wait...消息的標籤,然後顯示爲模式少,光標變成沙漏形狀,做的Excel工作,改變光標回默認和隱藏PleaseWaitForm

Dim pleaseWait As New PleaseWaitForm 
pleaseWait.Show() 

' Set cursor as hourglass 
Cursor.Current = Cursors.WaitCursor 

Application.DoEvents 

' Execute your GoToSheets method here 

' Set cursor as default arrow 
Cursor.Current = Cursors.Default 

' Hide the please wait form 
pleaseWait.Hide()