2012/5/26日志
2012-05-26 16:57
162 查看
1 想在winform中显示map及各种操作等:
方法一:
可以在winform上使用webBrowser的,然后webBrowser的url属性指向本地的某一个你需要的.html文件.
方法二:
可以在winform上使用webBrowser的,然后设置url的属性指向“http://.....”.
但是对于第一种方法而言,绝对地址很容易造成麻烦,解决的方案:
在嵌入webBrowser控件的winform的—designer,cs文件中:
嵌入webBrowser时,设置其url属性为“D:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\baidumap.html”(这里貌似只能使用网页的绝对地址,而没有相对地址可用),这时可在winform的cs文件中修改:
注意:将baidumap.html文件放在debug位置下面!!!!
2 js与c#之间函数的相互调用:
在Form类定义前面加入:
winform控件webbrowser和js脚本互调
修改webbrowser的属性使c#可以调用js方法:如果要传值,则可以定义object[]数组。具体方法如下例子:首先在js中定义被c#调用的方法:
与脚本的互操作 首先是调用Web页面的脚本中已经定义好的函数。假设HTML中有如下Javascript:
function DoAdd(a, b) {
return a + b;
}
那么,我们要在.cs文件中调用它,只需如下代码即可:
object oSum = webBrowser.Document.InvokeScript("DoAdd", new object[] { 1, 2 });
int sum = Convert.ToInt32(oSum);
其次,如果我们想执行一段Web页面中原本没有的脚本,该怎么做呢?这次.Net的类没有提供,看来还要依靠COM了。IHTMLWindow2可以将任意的字符串作为脚本代码来执行。
方法一:
可以在winform上使用webBrowser的,然后webBrowser的url属性指向本地的某一个你需要的.html文件.
方法二:
可以在winform上使用webBrowser的,然后设置url的属性指向“http://.....”.
但是对于第一种方法而言,绝对地址很容易造成麻烦,解决的方案:
string address=System.AppDomain.CurrentDomain.BaseDirectory+"baidumap.html"; this.webBrowser1.Url = new System.Uri(address,System.UriKind.Absolute);
在嵌入webBrowser控件的winform的—designer,cs文件中:
嵌入webBrowser时,设置其url属性为“D:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\baidumap.html”(这里貌似只能使用网页的绝对地址,而没有相对地址可用),这时可在winform的cs文件中修改:
// BaiduMapDemo.Designer.cs #region Windows 窗体设计器生成的代码 /// <summary> /// 设计器支持所需的方法 - 不要 /// 使用代码编辑器修改此方法的内容。 /// </summary> private void InitializeComponent() { //省略..... string address=System.AppDomain.CurrentDomain.BaseDirectory+"baidumap.html"; this.webBrowser1.Url = new System.Uri(address, System.UriKind.Absolute); //记住这里设置仍然是“绝对地址” //省略 }
注意:将baidumap.html文件放在debug位置下面!!!!
2 js与c#之间函数的相互调用:
在Form类定义前面加入:
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")] [System.Runtime.InteropServices.ComVisibleAttribute(true)] //这是为了将该类设置为com可访问。如果不进行该声明将会出错。
winform控件webbrowser和js脚本互调
修改webbrowser的属性使c#可以调用js方法:如果要传值,则可以定义object[]数组。具体方法如下例子:首先在js中定义被c#调用的方法:
与脚本的互操作 首先是调用Web页面的脚本中已经定义好的函数。假设HTML中有如下Javascript:
function DoAdd(a, b) {
return a + b;
}
那么,我们要在.cs文件中调用它,只需如下代码即可:
object oSum = webBrowser.Document.InvokeScript("DoAdd", new object[] { 1, 2 });
int sum = Convert.ToInt32(oSum);
其次,如果我们想执行一段Web页面中原本没有的脚本,该怎么做呢?这次.Net的类没有提供,看来还要依靠COM了。IHTMLWindow2可以将任意的字符串作为脚本代码来执行。
string scriptline01 = @"function ShowPageInfo() {"; string scriptline02 = @" var numLinks = document.links.length; "; string scriptline03 = @" var numForms = document.forms.length; "; string scriptline04 = @" var numImages = document.images.length; "; string scriptline05 = @" var numScripts = document.scripts.length; "; string scriptline06 = @" alert('网页的统计结果:\r\n链接数:' + numLinks + "; string scriptline07 = @" '\r\n表单数:' + numForms + "; string scriptline08 = @" '\r\n图像数:' + numImages + "; string scriptline09 = @" '\r\n脚本数:' + numScripts);}"; string scriptline10 = @"ShowPageInfo();"; string strScript = scriptline01 + scriptline02 + scriptline03 + scriptline04 + scriptline05 + scriptline06 + scriptline07 + scriptline08 + scriptline09 + scriptline10; IHTMLWindow2 win = (IHTMLWindow2)webBrowser.Document.Window.DomWindow; win.execScript(strScript, "Javascript")
相关文章推荐
- 2012/5/26日志
- 清华大学老师的一席话——太受益了来源: 修林的日志
- Oracle EBS OM(Order Management)模块日志收集方法
- REDO log 日志挖掘数据恢复
- logstash开源日志管理系统-1-logstash是什么
- 在项目中输出 日志信息
- 【m从翻译os文章】写日志禁令Sqlnet.log和Listener.log
- 用Kibana和logstash快速搭建实时日志查询、收集与分析系统
- shell脚本:脚本分析汇总ping日志文件
- Android Studio添加日志过滤
- 日志-log4net
- rsyslog 服务器重启后 发现不能接受到外部日志 只能接受本地日志 关闭防火墙即可
- Java使用log4j进行日志管理
- 传真服务器开发 三页传真过程全记录(日志形式)
- 配置Syslog输出到远程日志服务器
- 日志相关处理
- 测试用LiveWriter写日志
- 百度日志分析方法概述
- 日志分析一个案例
- syslog日志格式解析