ブラウザからのイベントを処理

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
					

						
					

						
					

もう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メソッド
非公開メンバーへのアクセス