2011-07-19 5 views
2

私が使用して入力ボタン要素を作成します。IE BHO用にC#で作成したボタンにイベントリスナーを追加するにはどうすればよいですか?私のIE BHOで

var button = doc.createElement("input"); 
    button.setAttribute("value", "myButton"); //next line gets an error 
    button.addEventListener("click", openFunction, false); //openFunction is a function inside of the same class 

私はbutton.addEventListenerを呼び出すしようとすると、私は「mshtml.IHTMLElementが」「にaddEventListener」エラーの定義が含まれていません取得します。私はこのサイト(http://help.dottoro.com/ljeuqqoq.php)によれば私ははっきりしているはずなので、この奇妙なことがわかります。

私はまた、thisスレッドを見ましたが、私がやろうとしていることは過度のように思えます。

答えて

2

最後に動作させました。元の質問にリンクしたスレッドと同様の方法を使用しなければならなかった。

/// Inside the BHO.cs file and in my namespace 
/// Generic HTML DOM Event method handler. 
/// 
public delegate void DHTMLEvent(IHTMLEventObj e); 

/// 
/// Generic Event handler for HTML DOM objects. 
/// Handles a basic event object which receives an IHTMLEventObj which 
/// applies to all document events raised. 
/// 
public class DHTMLEventHandler 
{ 
    public DHTMLEvent Handler; 
    HTMLDocument Document; 

    public DHTMLEventHandler(HTMLDocument doc) 
    { 
     this.Document = doc; 
    } 
    [DispId(0)] 
    public void Call() 
    { 
     Handler([email protected]); 
    } 
} 
    public void BrowserEventHandler(IHTMLEventObj e) 
    { 
     try 
     { 
      if (e.type == "click" && e.srcElement.id == "IDOfmyButton") 
      { 
       // do something. 
       something(); 
      } 
     } 
     catch 
     { 
     } 

    } 

私OnDocumentComplete方法インサイド(も[初心者のための余分な情報]上記のように同じ名前空間内):

  DHTMLEventHandler myHandler = new DHTMLEventHandler(framedoc); 
      myHandler.Handler += new DHTMLEvent(this.BrowserEventHandler); 
      button.onclick = myHandler; 

作業の多くは、単にボタンをクリックして取得します。 Firefoxでは1行でした:O

+0

上記のコードではframedocとは何ですか? –

関連する問題