Webブラウザにデザイナのプロパティでマウスクリックイベントがないため、新しいMouse-clickイベントハンドラを手動でWebブラウザコントロールに追加しようとしています。C#UserControl、Add Event Handler Manually
ユーザーがWebブラウザコントロール内をクリックするたびにコードを実行する必要があります。この回避策は、Webブラウザに既存のDocumentCompletedイベントハンドラを持たないハンドラを追加します。
以下のコードを実行すると、null例外が返されます。私はそれがこのようにすることが可能かどうか疑問に思っています。
EDIT:whileループを追加してwebbrowser1のロードが確実に完了しました。しかし、今はwhileループに詰まってしまいます。ウェブページの読み込みが完了していないことを意味しますか?
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
try
{
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
webBrowser1.Document.Body.MouseDown += new HtmlElementEventHandler(Body_MouseDown);
}
catch (Exception ex)
{
Debug.WriteLine(ex.StackTrace);
Debug.WriteLine(ex.Message);
}
}
private void Body_MouseDown(Object sender, HtmlElementEventArgs e)
{
if(e.MouseButtonsPressed == MouseButtons.Left)
{
MessageBox.Show("File in web browser selected");
}
}
。ハンドラを追加する前に、 'WebBrowserReadyState.Complete'となる' webBrowser1''の 'ReadyState'の条件チェックを追加しようとしましたか? – praty
追加した後、 'webBrowser1'は' WebBrowserReadyState.Complete'になく、必要なイベントハンドラは追加されません。それを 'WebBrowserReadyState.Complete'にする方法を教えてください。 – CodeCafe
'while(webBrowser1.ReadyState!= WebBrowserReadyState.Complete) { Application.DoEvents(); } '私はこれを試しましたが、whileループでコードが邪魔になります。 – CodeCafe