|
在.net中的WebBrowser 控件可以让你装载Windows Form 应用程序中的Web 网页和其它采用浏览器的文件。可以使用webbrowser 控件将现有的web框架控制项加入至 Windows Form 客户端应用程序。 还是直接看代码吧。
WebBrowser 控制项 提供的属性、方法和事件,可用来实现 Internet Explorer 的控制项 webBrowser1.Navigate("www.itwis.com"); //将指定位置处的文件载入至 WebBrowser webBrowser1.GoBack();//上一页 webBrowser1.GoForward();//下一页 webBrowser1.Refresh();//刷新 webBrowser1.GoHome();//主页 这里提供了WebBrowser常用的方法,
上面的代码是将 我们园子的主页载入到WebBrowser控件中。如果我们想要在应用程式中产生自己的网页内容,可以设定DocumentText属性。也可以通过Document属性来处理目前的网页内容。如下代码是使用 DocumentText 属性,显示网页内容。并用Document属性来处理所显示的网页。 1private void btnDocumentText_Click(object sender, EventArgs e) 2 { 3 string szHtml = @" 4<HTML> 5<HEAD> 6<TITLE> DocumentText </TITLE> 7</HEAD> 8 9<BODY> 10 Please enter your name:<br/> 11 <input type='text' name='Name'/><br/> 12 <a href='http://www.microsoft.com' >Send input to method of Form class</a> 13 14</BODY> 15</HTML>"; 17 webBrowser1.DocumentText = szHtml;18 19 } 20 21 private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e) 22 { 23 System.Windows.Forms.HtmlDocument document = this.webBrowser1.Document; 24 25 if (document != null && document.All["Name"] != null && String.IsNullOrEmpty(document.All["Name"].GetAttribute("value"))) 26 { 27 e.Cancel = true; 28 System.Windows.Forms.MessageBox.Show("You must enter your name before you can navigate to " + e.Url.ToString()); 29 } 30 31 } 既然我们可以通过DocumentText生成自己的网页,那么能不能象使用IE那样操作这个网页呢?,答案是肯定的,完全可以像操作Web程序那样操作WebBrowser 控制项。比如我们可以加入脚本,CSS。当然,如果你熟悉 HTML 物件对象模型 (DOM),也可以透过 Document 属性来处理目前的Web网页内容。下面的例子加入了JavaScript脚本来控制网页。如果要在Winfrom程序中写大量的Javascriot代码,而且这些代码最终要转换成String型载入到Webbrowser 那将是很痛苦的事情,不过没有关系,我们可以创建一个js文件,放入资源中,用的时候只需从资源中载入即可。这里我创建一个名为 ClientScript.js 的文件。
1<script language = "javascript"> 2function ClickEvent(name) 3{ 4 alert("Hello: " +name); 5} 6 7function KeyDown() 8{ 9 if (event.keyCode==116) 10 { 11 event.keyCode=0; 12 event.returnValue=false; 13 } 14 15 return false; 16} string szClientScript = ManagedWebBrowser.Properties.Resources.ResourceManager.GetString("ClientScript");
string szWebBrowserText = "<html>" + "<head>" + "<title></title>"+ szClientScript + "</head>" + "<body onkeydown=\"KeyDown()\" oncontextmenu=\"event.returnValue=false\">"+ "Please enter your name:<br/>"+ "<input type='text' name='Name'/><br/>"+ "<font onclick = 'ClickEvent(Name.value)'>Click Here</font>"+ "</body></html>"; webBrowser1.DocumentText = szWebBrowserText; WebBrowser 是 System.Windows.Forms 下的控制项,也就是意味着它是用在WimForm程序下,那么WebWrower所载入的Web页面如何实现在WinForm程序下处理呢。例如上例中的 "<font onclick = 'ClickEvent(Name.value)'>Click Here</font>" 。这里的Click事件是通过脚本处理的,如何让这个Click事件在Winform中处理呢?这里要做一些修改。若要从指令码存取用户端应用程式,需要设定ObjectForScripting 属性。指令码可以将您指定的物件当做window.external 物件来存取。
共2页: 上一页 1 [2] 下一页
|