Web ブラウザーを使用して、C# Windows フォーム アプリケーションを作成しようとしています。
Webkit ブラウザーを使用しています: ブラウザー へのリンク
Webブラウザはクラスファイルを入れたので、使用するすべてのフォームからアクセスできます。
ウェブブラウザを生成するコード:
public static WebKit.WebKitBrowser mainBrowser = new WebKitBrowser();
私はいくつかの問題を与えるこのコードを持っています:
globalVars.mainBrowser.Navigate("http://www.somesite.com/");
while (globalVars.mainBrowser.IsBusy)
{
System.Threading.Thread.Sleep(500);
}
globalVars.mainBrowser.Document.GetElementById("user").TextContent = "User Name";
しかし、それは機能していません。しばらくしてからメッセージボックスを実行すると、ページをレンダリングする前に表示されます...
では、サイトが完全に読み込まれるまで待つ最善の方法は何でしょうか?
更新 1
スタンドアロン クラス ファイルで、Webkit コントロールを次のように作成していますか。
public static WebKit.WebKitBrowser mainBrowser = new WebKitBrowser();
そして、フォームで、私は今、このコードを持っています (Tearsdontfalls に感謝します):
public void loginthen()
{
globalVars.mainBrowser.DocumentCompleted += mainBrowser_DocumentCompleted;
globalVars.mainBrowser.Navigate("http://www.somesite.com/");
}
void mainBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
var send = sender as WebKit.WebKitBrowser;
if (send.Url == e.Url)
{
MessageBox.Show("Inloggen");
globalVars.mainBrowser.Document.GetElementById("user").TextContent = "User Name";
}
}
しかし、メッセージボックスは表示されません。しかし、ローカル (同じフォーム上) の Webkit ブラウザーを使用すると、MessageBox が表示されます。しかし、その後、ユーザー フィールドは入力されません。
documentCompleted イベントのブレークポイントでさえ、トリガーされません。イベントリスナーが機能していないようです...
では、なぜ機能しないのでしょうか。