日期:2014-05-18 浏览次数:21009 次
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>显示</title> <script src="jquery-1.5.2.min.js" type="text/javascript"></script> <style type="text/css"> .BarNow { font-size:26px; color:Blue; } </style> <script language="javascript" type="text/javascript"> function ShowCode(source) { $("#message").html(source); } </script> </head> <body> <div id="message"></div> </body> </html>
//订阅者 public interface Subscriber { void ShowMsg(string Msg); } public static class Message { static IList<Subscriber> Subscribers = new List<Subscriber>(); public static void Add(Subscriber sub) { Subscribers.Add(sub); } public static void Delete(Subscriber sub) { Subscribers.Remove(sub); } public static void AssignMessage(string Msg) { foreach (var sub in Subscribers) { sub.ShowMsg(Msg); } } //调用Send发送消息给订阅者 public static void Send(string message) { AssignMessage(message); } }
[System.Runtime.InteropServices.ComVisibleAttribute(true)] public partial class Child : Form ,Subscriber { public Child(string name) { InitializeComponent(); test(); } private void test() { webBrowser1.Navigate(HtmlPath+"Page.html"); webBrowser1.ObjectForScripting = this; Message.Add(this);//订阅消息 } //显示消息给html public void ShowMsg(string Msg) { //检查消息是否接收到,得到接收的消息为;这是测试消息! Label1.Text = Msg; object[] objects = new object[10]; objects[0] = "<span class=\"BarNow\">" + Msg + "</span>"; webBrowser1.Document.InvokeScript("ShowCode", objects); //通过订阅者的方式调用出现InvalidCastException异常。提示数字转换异常?? //通过button调用却是正常显示!! } private void Child_FormClosing(object sender, FormClosingEventArgs e) { Message.Delete(this);//取消订阅 Dispose(); } //用窗体上button直接调用ShowMsg() 消息能正常显示消息 private void Button1_Click(object sender, EventArgs e) { //object[] objects = new object[1]; //objects[0] = "<span class=\"BarNow\">Adflsfjaslnlu</span>"; //webBrowser1.Document.InvokeScript("ShowCode", objects); ShowMsg("这是测试消息!"); //直接用button调用成功。 }
foreach (string child in childs) { if (!string.IsNullOrEmpty(child))