2012-05-09 8 views
1

私のプログラムでは、Webブラウザコントロールを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がかなり多く読み込まれます。 フォームを閉じるのを待つ方法がありますか?それは何ですか?

+0

はありません、(VB11まで)がありません。イベントハンドラを使用します。 – SLaks

+2

タイマーの使用を検討しましたか? –

答えて

5

タイマーは使用しないでください。イベントはこれのために作られています。 フォームのFormClosingイベントを購読する必要があります。ウィンドウが閉じられた後に実行されるコードは、イベントハンドラメソッド内になければなりません。

AddHanlderキーワードを使用してください。

AddHandler yourForm.FormClosing, AddressOf FormClosingEventhandler 

後で続行するイベントハンドラを使用します。

Private Sub FormClosingEventhandler() 
    'proceed here 
End Sub 

http://msdn.microsoft.com/en-us/library/system.windows.forms.form.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.form.formclosing.aspx

関連する問題