none
Form.WebBrowerコンポーネントでonchangeイベントを取得する方法 RRS feed

  • 質問

  • .NET Framework 2.0以降でフォームコントロールとして標準搭載されているWebBrowerのbodyタグ内で発生したイベントをC#側で取得する方法を調べています。

    キー押下や選択範囲の変更は下記のようにして取得できるのですが、テキスト自体の変更(onchange)を取得するにはどのようにしたらよいでしょうか。

    // private EventHandler SelectionChangeHandler, KeyDownHandler;
    HtmlDocument hdoc = browser.Document;
    hdoc.AttachEventHandler("onselectionchange", SelectionChangeHandler);
    hdoc.AttachEventHandler("onkeydown", KeyDownHandler);
    • 編集済み Tank2005 2009年8月11日 11:36
    2009年8月11日 5:17

回答

  • 検証してませんのでハズレかもしれませんが・・・

    > テキスト自体の変更(onchange)を取得するにはどのようにしたらよいでしょうか。

    そのイベントの適用可能なオブジェクトに対してハンドラをアタッチしないとうまくいかないと思います。

    以下のページによると、onchange の場合は input, select, textarea とのことですから、document には
    適用できないはずです。

    http://msdn.microsoft.com/ja-jp/library/cc392240.aspx

    従い、HtmlDocument から GetElementById メソッドなどで、そのオブジェクトにに該当する HtmlElement
    を取得し、それに HtmlElement.AttachEventHandler メソッドでハンドラをアタッチしてはいかがでしょう。

    • 回答としてマーク Tank2005 2009年8月16日 12:32
    2009年8月11日 13:29

すべての返信

  • 検証してませんのでハズレかもしれませんが・・・

    > テキスト自体の変更(onchange)を取得するにはどのようにしたらよいでしょうか。

    そのイベントの適用可能なオブジェクトに対してハンドラをアタッチしないとうまくいかないと思います。

    以下のページによると、onchange の場合は input, select, textarea とのことですから、document には
    適用できないはずです。

    http://msdn.microsoft.com/ja-jp/library/cc392240.aspx

    従い、HtmlDocument から GetElementById メソッドなどで、そのオブジェクトにに該当する HtmlElement
    を取得し、それに HtmlElement.AttachEventHandler メソッドでハンドラをアタッチしてはいかがでしょう。

    • 回答としてマーク Tank2005 2009年8月16日 12:32
    2009年8月11日 13:29
  • お返事ありがとうございます。DesignMode="on"の際にテキスト編集のイベントを取得したいと思っていたのですが、特定のコンポーネントでしか無理なようなので、onkeydownを代替イベントとして利用したいと思います。
    2009年8月12日 6:14