ブラウザ/HTMLイベント処理

読み込み完了時などにInternetExplorerやWebBrowserコントロールでイベントが発生しますので、 イベントハンドラを定義して処理を実行させることができます。

ブラウザからのイベント

InternetExplorer操作時

InternetExplorer操作時に補足できるイベントは以下があります。


					Public Class Form1
	
						'IEオブジェクトを格納する変数をWithEventsで定義します。
						Private WithEvents objIE As SHDocVw.InternetExplorer
						
						Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
					
							'省略
					
						End Sub
					
						'イベント発生時に処理が実行されます。
						Public Sub DocumentComplete(ByVal pDisp As Object, ByRef e As Object) Handles objIE.DocumentComplete
				
							
				
						End Sub
						
					End Class
					
						public partial class Form1 : Form
						{
							//IEオブジェクトを格納する変数をで定義します。
							private SHDocVw.InternetExplorer objIE = new SHDocVw.InternetExplorer();
					
							public Form2()
							{
								InitializeComponent();
							}
					
							private void Form2_Load(object sender, System.EventArgs e)
							{
					
								//画面表示時に各イベントハンドラを定義します。
								objIE.WebWorkerStarted += new SHDocVw.DWebBrowserEvents2_WebWorkerStartedEventHandler(this.WebWorkerStarted);
								objIE.BeforeNavigate2 += new SHDocVw.DWebBrowserEvents2_BeforeNavigate2EventHandler(this.BeforeNavigate2);
								objIE.BeforeScriptExecute += new SHDocVw.DWebBrowserEvents2_BeforeScriptExecuteEventHandler(this.BeforeScriptExecute);
								objIE.DocumentComplete += new SHDocVw.DWebBrowserEvents2_DocumentCompleteEventHandler(this.DocumentComplete);
								objIE.NavigateComplete2 += new SHDocVw.DWebBrowserEvents2_NavigateComplete2EventHandler(this.NavigateComplete2);
								objIE.DownloadBegin += new SHDocVw.DWebBrowserEvents2_DownloadBeginEventHandler(this.DownloadBegin);
								objIE.DownloadComplete += new SHDocVw.DWebBrowserEvents2_DownloadCompleteEventHandler(this.DownloadComplete);
								objIE.FileDownload += new SHDocVw.DWebBrowserEvents2_FileDownloadEventHandler(this.FileDownload);
					
							}
					
							public void WebWorkerStarted(uint dwUniqueID, string bstrWorkerLabel)
							{
								Console.WriteLine("WebWorkerStarted");
							}
					
							public void BeforeNavigate2(object pDisp, ref object URL, ref object Flags, ref object TargetFrameName, ref object PostData, ref object Headers, ref bool Cancel)
							{
								Console.WriteLine("BeforeNavigate2");
							}
					
							public void BeforeScriptExecute(object pDispWindow)
							{
								Console.WriteLine("BeforeScriptExecute");
							}
					
							public void DocumentComplete(object pDisp, ref object e)
							{
								Console.WriteLine("DocumentComplete");
							}
					
							public void NavigateComplete2(object pDisp, ref object e)
							{
								Console.WriteLine("NavigateComplete2");
							}
					
							public void DownloadBegin()
							{
								Console.WriteLine("DownloadBegin");
							}
					
							public void DownloadComplete()
							{
								Console.WriteLine("DownloadComplete");
							}
					
							public void FileDownload(bool ActiveDocument, ref bool Cancel)
							{
								Console.WriteLine("FileDownload");
							}
					
							private void Form2_FormClosed(object sender, FormClosedEventArgs e)
							{
								objIE.WebWorkerStarted -= new SHDocVw.DWebBrowserEvents2_WebWorkerStartedEventHandler(this.WebWorkerStarted);
								objIE.BeforeNavigate2 -= new SHDocVw.DWebBrowserEvents2_BeforeNavigate2EventHandler(this.BeforeNavigate2);
								objIE.BeforeScriptExecute -= new SHDocVw.DWebBrowserEvents2_BeforeScriptExecuteEventHandler(this.BeforeScriptExecute);
								objIE.DocumentComplete -= new SHDocVw.DWebBrowserEvents2_DocumentCompleteEventHandler(this.DocumentComplete);
								objIE.NavigateComplete2 -= new SHDocVw.DWebBrowserEvents2_NavigateComplete2EventHandler(this.NavigateComplete2);
								objIE.DownloadBegin -= new SHDocVw.DWebBrowserEvents2_DownloadBeginEventHandler(this.DownloadBegin);
								objIE.DownloadComplete -= new SHDocVw.DWebBrowserEvents2_DownloadCompleteEventHandler(this.DownloadComplete);
								objIE.FileDownload -= new SHDocVw.DWebBrowserEvents2_FileDownloadEventHandler(this.FileDownload);
							}
						}					
					

						
					

もう1つの方法です。

						Public Class Form1

							'IEオブジェクトを格納する変数をWithEventsで定義します。
							Private WithEvents objIE As SHDocVw.InternetExplorer
					
							Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
						
								'省略
					
								'プログラム実行時に動的に追加します。
								AddHandler objIE.DocumentComplete, AddressOf DocumentComplete
							
							End Sub
							
							Public Sub DocumentComplete(ByVal pDisp As Object, ByRef e As Object)
					
								'イベント発生時に処理が実行されます。
					
							End Sub
							
							Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed
							
								'イベントを使わなくなったら削除します。
								RemoveHandler Button1.Click, AddressOf Button1_Click
					
							End Sub
						
						End Class
						
							private void Form1_Load(object sender, EventArgs e)
							{
								// 省略
								
								// イベントハンドラの追加
								objIe.DocumentComplete += new DWebBrowserEvents2_DocumentCompleteEventHandler(this.DocumentComplete);
						
								:
							}
						
							private void DocumentComplete(object pDisp, ref object e)
							{
								// イベント発生時に処理が実行されます。
							}
							
							private void Form1_FormClosed(object sender, FormClosedEventArgs e)
							{
								// イベントハンドラの削除
								objIe.DocumentComplete -= new DWebBrowserEvents2_DocumentCompleteEventHandler(this.DocumentComplete);
							}	
						
	
							
						

WebBrowserコントロール使用時

WebBrowserコントロール操作時に補足できるイベントは以下があります。

通常のコントロール同様に、VisualStudioの画面からイベントハンドラを追加できます。

						
					
						private void Form1_Load(object sender, EventArgs e)
						{
							:
							
							// イベントハンドラの追加
							WebBrowser1.DocumentComplete += new WebBrowserDocumentCompletedEventHandler(this.DocumentComplete);
					
							:
						}
						
						private void DocumentComplete(object sender, WebBrowserDocumentCompletedEventArgs e)
						{
							// 
						
						}
					

						
					

HTML要素からのイベント

動的にイベント追加

WebBrowserコントロール使用時

WebBrowserコントロールで扱うマネージのHtmlElementではすべてのイベントは公開されていませんので、 AttachEventHandlerメソッドにより、非公開のイベントにイベントハンドラーを追加します。 ドキュメントの読み込みが完了したDocumentCompletedイベント発生後に本メソッドをコールしてください。

参考

HtmlElement.AttachEventHandlerメソッド
非公開メンバーへのアクセス