在我的程序中,我使用WebBrowser控件進行OAuth。它位於vk_auth_window
窗體上。所以在代碼中,我叫vk_auth_window.WebBrowser1.Navigate(vkauthurl)
。如果身份驗證成功,我會默默獲取令牌,但如果用戶未通過身份驗證,則會向他們顯示錶單vk_auth_window
以輸入用戶名和密碼。要檢查這一點,我會捕獲_DocumentComplete事件並檢查正確的URL。在用戶完成身份驗證或關閉身份驗證表單之前,我不需要執行其他代碼。 ShowDialog()可以做到這一點,但它會以某種方式在WebBrowser控件中隱藏來自用戶名和密碼字段的光標。 因此,我介紹了一個變量Dim showform as Boolean=True
並將其從_DocumenComplete事件中設置爲False,並在主代碼中使用了無限循環。如何等待沒有ShowDialog()的表單關閉?
While showform
System.Threading.Thread.Sleep(100)
Application.DoEvents()
End While
但是,由於線程休眠,它使用戶輸入緩慢。如果我刪除它們,它會加載CPU相當多。 有沒有更好的方法來等待表單關閉?它是什麼?
沒有,沒有(直到VB11)。使用事件處理程序。 – SLaks
你有沒有考慮過使用定時器? –