|
2008/07/11(Fri) 19:22:00 編集(投稿者)
■No21905 (渋木宏明(ひどり) さん) に返信 >>webBrowserコントロールは、Clickイベントを取得することが難しく、悩んでおります。 > > WebBroweser コントロールの Click イベントを捕まえてもすぐにドン詰まります。 > WebBrowser コントロールとコンテナアプリケーションとのコミュニケーションには、WebBrowser.ObjectForScripting プロパティを使用するのが定石です。
迅速なご回答ありがとうございます。 作業時間が貴重なので、とてもたすかります。
ObjectForScripting プロパティで調べてみたところ、MSDNにそのままのサンプルが掲載されておりました。これを使うことで、見事要件を実現できました。
大変助かりました。 どうもありがとうございました。
以下に、動いたサンプルを載せておきます。(ほとんどMSDNそのままですが・・・) クラスファイルひとつ用意して、中のソース全て上書きしてそのまま実行すると動きます。
#確認動作環境:WinXP Pro SP3, VS2008 Dev C# #あらかじめ作成される Program.cs と Form1は削除します。
----- サンプルコード ----- using System; using System.Windows.Forms; using System.Security.Permissions;
[PermissionSet(SecurityAction.Demand,Name="FullTrust")] [System.Runtime.InteropServices.ComVisibleAttribute(true)] public class Form1:Form { private WebBrowser webBrowser1 = new WebBrowser();
[STAThread] public static void Main() { Application.EnableVisualStyles(); Application.Run(new Form1()); }
public Form1() { webBrowser1.Dock = DockStyle.Fill; Controls.Add(webBrowser1); Load += new EventHandler(Form1_Load); }
private void Form1_Load(object sender,EventArgs e) { webBrowser1.AllowWebBrowserDrop = false; webBrowser1.IsWebBrowserContextMenuEnabled = false; webBrowser1.WebBrowserShortcutsEnabled = false; webBrowser1.ObjectForScripting = this;
webBrowser1.DocumentText = "<html><head></head><body>" + "<br>" + "<center>" + "<button onclick=\"window.external.ButtonTest('ボタンのクリックも')\">ボタンのクリック</button><br><br>" + "<div onclick=\"window.external.DivTest('DIVタグでも')\" style=\"border: solid 1px #FF0000 \">DIVタグのクリック</div>" + "</center>" + "</body></html>"; }
public void ButtonTest(String message) { MessageBox.Show(message + "イベント取れました!", "client code"); }
public void DivTest(string message) { MessageBox.Show(message + "うまくいきました!", "client code"); } } ----- サンプルコード ここまで -----
|