これは遅すぎるかもしれませんが、まだ疑問に思っている場合に備えて、とにかくここにあります:
1 - HtmlElement div_result = webBrowser1.Document.GetElementById("div_result"); 行 #1 は、Web ページが読み込まれ、DocumentCompleted イベントがブラウザーによって呼び出されたときに実行されます。イベント ハンドラー内で、最初に DOM 要素 "div_result" へのポインターを取得し、div_result という名前の HtmlElement 型変数を割り当てます。
2 - div_result.AttachEventHandler("onpropertychange", 新しい EventHandler(resultEventHandler)); 2 行目 - 「onpropertychange」イベントを登録し、resultEventHandler メソッドをリスナー メソッドとして割り当てます。
Web ページのボタンをクリックするたびに、ボタン (私が推測) は、Web ページをロードする送信されるフォームになっています。ちなみに、ボタンがクリックされたときに使用している投稿方法(取得または投稿)を指定していませんでした。Web ページのダウンロードが完了し、DOM 要素ツリーが構築されると、DocumentCompleted イベントが呼び出されます。DocumentCompleted イベント ハンドラー メソッドで上記の手順を実行しました。
ボタンをクリックするたびに Web ページがリロードされ、onpropertychange イベントのイベント リスナーを再割り当てします。イベントリスナーのみを割り当てています。イベントが呼び出されることはありません。ボタンをクリックするたびに定義されます。鶏が先か卵が先かという古典的な問題があります。しかし、あなたの場合、チキンはボタンクリックイベントであり、メソッド内のすべての変数の状態をリセットする DocumentCompleted メソッドを実行し、ウェブでボタンがクリックされる前に、卵は DIV 要素の onpropertychange イベントへのポインターを必要としています。ページ。構築されていないDOMからポインタを取得する前に、イベントリスナーをhtml要素にどのように割り当てますか? DocumentCompleted メソッドを含むクラスに Boolean フラグ変数を配置し、その初期状態を設定します。div_result 変数を DocumentCompleted メソッドの外に移動して、スコープを拡大し、ボタン クリック イベント全体で状態を保存します。このようにして、div 要素へのポインターを取得し、Web ページが初めてダウンロードされるときにその onpropertychange イベント リスナーを設定します。DIV 要素の onpropertychange イベント リスナーへのポインターを 1 回だけ設定する場合は、テストを追加します (以下のサンプル コードに 1 つ入れています)。次にボタンをクリックすると、イベントが発生します。ノート!Web ページの要素またはそのイベントへのポインタを格納した後は、Web ページに要素を追加または削除しないでください。それ以外の場合は、DOM を再解析して、DOM ツリー内の Element の新しい位置へのポインターを取得する必要があります。
//下記参照:
class SomeClass
{
bool DocumentHasLoaded = false;
HtmlElement div_result = null;
//Constructor and other methods go here....
//Then change your DocumentCompleted method to look like this:
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (DocumentHasLoaded == false) // I prefer using a ! before the variable instead
{
DocumentHasLoaded = true; // You will have to create your own appropriately timed mechanism to reset this variable's state should you want to execute the whole process again.
div_result = webBrowser1.Document.GetElementById("div_result");
div_result.AttachEventHandler("onpropertychange", new EventHandler(resultEventHandler));
}
}
}
2 番目の質問に答えるには、DIV に読み込まれるデータに関する詳細情報が必要です。たとえば、それがどこから来て、どのようなタイプであるか、および考えられるその他の関連情報などです。