說實話來到博客園也得2年多了,可惜一片文章都沒寫過。只因今天心情很不好,決定趁工休時間寫篇博文放松放松。文字真的是一件很神奇的東西,寫出來了感覺心情會好很多。我現在有個想法就是把我總結的一些技術性的東西以后慢慢地放到博客園上來。
今天心情為什么不好呢,因為早晨我遲到了。這次遲到估計是我本月內第三次遲到了,好害怕公司通報啊。由於路上修路,今早得繞道。平時也就是20分鍾的路程,今早居然用了40分鍾。靠,為什么堵車啊,為什么總是在右轉或者左轉的時候那么堵。看紅綠燈那么偏向直行的車,我真想踹門砸玻璃。我不停的催促着司機,快點吧,到50我們就開會了。可真到了無影山中路上,我絕望了,已經快8點了,足足遲到了快10分鍾。我也不那么生氣了,認命吧。我同事一路上很淡定,在后頭給媳婦打了電話,默默地等待着遲到的到來。唉,以后一定要在鈴聲響了就起床,因為說不定就會遇到耽誤行程的事情,要留出解決問題的時間。
好吧,現在真不煩惱了。第一篇文章不能就只是發牢騷,寫點有用的東西吧。這段時間一直在弄winform和android,我打算在新年到來之前,一定要讓自己的技術有所提升。對於android的學習,我准備分塊進行,先實現一些手機中常用的功能。等對android熟悉了,再寫一些自己想實現的好玩的東西。以后我會把實現的一個個小功能都在這園子里整理出來,也為以后復習用,說不定時間久了,這就是財富。
也沒有准備今天到底寫什么,就突然想起來了昨天弄的一個東西,WebBrowser控件的使用:
對於初學者的我來說,平時都沒怎么接觸過這個控件。最近想實現在winform中嵌套網頁,從網頁里顯示出來列表數據。由於需要涉及到下載網頁中的數據問題,所以得用到winform和webform之間的通信問題。從園子里搜索了好多,終於找到了個解決方法。
1.winform中訪問webform中的元素,並添加事件
這個比較簡單,舉個例子:
webform中的內容:

1 <html>
2 <body>
3 <input id="btnDownload" type="button" value="下載並打開" />
4 </body>
5 </html>
winform中的內容:
由於winform訪問WebBrowser控件中的內容,需要在WebBrowser控件中文檔加載完后才可以。
所以需要在DocumentCompleted時間下編寫調用代碼(DocumentCompleted:在web瀏覽器控件中承載的文檔全部加載后發生。)

1 private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 2 { 3 HtmlDocument hd = webBrowser1.Document;//這句是獲取WebBrowser控件中的文檔對象
4 hd.GetElementById("btnDownload").Click += new HtmlElementEventHandler(btnDownload_HtmlElementEvent);//這句就是為文檔中的按鈕添加click事件
5 } 6
7 //這個是自定義的方法,就是click后要實現的功能
8 void btnDownload_HtmlElementEvent(object sender, HtmlElementEventArgs e) 9 { 10 MessageBox.Show("我現在不生氣了"); 11 }
其中:
hd.GetElementById是捕獲元素的方法之一,在vs用點一下就出來,定位到方法名上后都一般能看到vs的智能提示,一般就明白該方法是干嘛用的了
園子里這位博主關於WebBrowser控件的使用介紹的很全,有時間的大家可以看看
http://www.cnblogs.com/peterzb/archive/2009/07/12/1521787.html
2.webform中訪問winform中的方法

1 <html>
2 <body>
3 <div id="dataList">
4 <ul>
5 <li><p onclick="window.external.showDetails(12178)">今天為什么遲到了啊,氣死我了。</p></li>
6
7 <li><p onclick="window.external.showDetails(12306)">以后我決定響鈴就起,不再拖沓。</p></li>
8
9 </ul>
10 </div>
11 </body>
12 </html>
winform中的內容:

1 using System.Security.Permissions; 2
3 [PermissionSet(SecurityAction.Demand, Name = "FullTrust")] 4 [System.Runtime.InteropServices.ComVisibleAttribute(true)] 5 public partial class Form1 : Form 6 { 7
8 public Form1() 9 { 10 InitializeComponent(); 11 webBrowser1.ObjectForScripting = this; 12
13 } 14
15 } 16
17 //在winform中的自定義方法,WebBrowser控件中js需要調用的方法
18
19 public void showDetails(int infoid) 20 { 21 frmDetails fd = new frmDetails(); 22 WebBrowser wb = (WebBrowser)fd.Controls["webBrowser1"]; 23 wb.Navigate("###?id=" + infoid); 24 fd.ShowDialog(); 25 }
我就不解釋了,復制到vs下,鼠標放到代碼,看智能提示,一看就明白是干嘛用的了。