2012/5/26日志
2012-05-26 16:57
148 查看
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日志
- [转]快速清除SQL Server日志的两种方法
- Hibernate3.6的log4j日志配置
- 绝了!这些话句句无价! - Qzone日志
- Oracle 日志文件管理基础
- 写给开发者:记录日志的10个建议
- Oracle redo log 大小及组数的设置(在线修改日志组数目及组成员个数)
- awk取出指定某天的慢日志(mysql)并使用工具分析
- SQL Server 2008 清空删除日志文件
- Mysql 日志详解
- jvm的GC日志分析
- 用Hive分析nginx日志——1
- 4种常见的MySQL日志类型
- springboot(10)日志记录
- Microsoft SQL Server事务日志的应用
- Linux下的系统日志
- 现在的学生- -~ - Qzone日志
- phpMyAdmin"请检查 PHP 或网站服务器日志,并正确配置 PHP 安装" 解决方法
- vmware tools 日志开启
- 【JAVA 包依赖关系】日志包log4j依赖