C#記憶功能的地址欄控件
C#記憶功能的地址欄控件
今天在做搜索引擎的資料準備,無意見到了cocosoft的文章,于是,按照原文一步一步,做了下來,運行后,感覺挺不錯的,跟我前面寫過的c#讀取網(wǎng)頁有些相識,但多了個地址欄控件的記憶功能.
本文描述了如何建立一個簡單的、常用的用戶控件——地址欄控件。
你只需要輸入部分字符,它在其下拉列表框中,就顯示出來與你所輸入相關的內(nèi)容(記憶功能)。
如果只要求輸入字符串就可以的話。那么,我們可以直接使用TextBox等控件完成輸入框。但如果你要讓你的輸入框有記憶功能的話。那么,我們所需要的就是要求能把以前所輸入的內(nèi)容讀取出來。
我們從下面開始講解如何讓我們的地址欄控件有記憶功能的。
建立自己的地址欄:
首先,我們要分兩步走。
第一步,我們首先要明白我們IE地址欄的歷史記憶內(nèi)容是從哪來的。因為只有知道它是從哪來的,我們才能明白我們的數(shù)據(jù)。
先看一下,IE在regedit(注冊表)里面都有些什么內(nèi)容。因為regeidt是Windows里面一個非常不錯的數(shù)據(jù)庫,它可以把整臺機子相關的一些東西都存放在里面。
在regedit里面,與IE相關的內(nèi)容有這些:
我們要的是“Software\Microsoft\Internet Explorer\TypedURLs”的數(shù)據(jù)。不然,我們寫的記憶功能就起不了什么作用了?;蛘?,出現(xiàn)一些其它數(shù)據(jù)。要知道,在regedit里面保存的數(shù)據(jù)可都是一些關鍵數(shù)據(jù)。如果一不小心被人XX掉的話,那么,L。
OK,現(xiàn)在已經(jīng)找到我們要的數(shù)據(jù)是從什么地方來的了。那么,我們就要開始打造我們自己的帶C#記憶功能的地址欄控件了。
那么,達到這些夠了嗎?當然,夠是夠了。但,你不想讓你的地址欄功能再強大一點嗎?那么,我們寫這樣的一個類來看看:
1、新建項目,選擇新建類庫,名字就順意了。比如:ControlSet.URLControl。
2、在資源管理里面添加引用System.Windows.Forms.dll。
3、然后,在資源管理器里面把Class1.cs改為UnManagedMethods.cs,然后,用下面的代碼替換:
- usingSystem;
- usingSystem.Runtime.InteropServices;
- namespaceControlSet.URLControl
- {
- [StructLayout(LayoutKind.Sequential)]
- internalstructRect
- {
- publicintleft;
- publicinttop;
- publicintright;
- publicintbottom;
- }
- [StructLayout(LayoutKind.Sequential)]
- internalstructComboBoxInfo
- {
- publicintcbSize;
- publicRectrcItem;
- publicRectrcButton;
- publicIntPtrstateButton;
- publicIntPtrhwndCombo;
- publicIntPtrhwndEdit;
- publicIntPtrhwndList;
- }
- ///<summary>
- ///AllunmanagedDllImportmethodsusedinthisassembly
- ///</summary>
- internalclassUnManagedMethods
- {
- [DllImport("User32.dll")]
- internalstaticexternboolGetComboBoxInfo
(IntPtrhwndCombo,refComboBoxInfoinfo);- [DllImport("Shlwapi.dll")]
- internalstaticexternvoidSHAutoComplete(IntPtrhwnd,IntPtrflags);
- }
- }
第二步,我們的地址欄出現(xiàn)了。那么,要用什么做為它的基控件呢?
因為我們要有記憶功能,那么,當然,要有一個能下拉的東西了。什么?ComboBox就是最好的選擇。那好,我們開始用ComboBox來構建我們自己的控件。
建立示例程序:
1、新建項目,選擇Windows應用程序,名稱:TestrulComboBox。
2、我們把我們所需要的控件放到工具箱里面。在工具箱上面點右鍵。添加/移除項。打開Com組件,選擇剛才項目生成的ControlSet.URLControl.dll。
3、把剛才添加到工具箱上面的Microsoft Web 瀏覽器控件,和ControlSet.URLControl.dll控件,拖放到主窗口上,并進行排列。
4、添加一個控鈕。并在它的事件中輸入如下代碼:
- privatevoidbtnSure_Click(objectsender,System.EventArgse)
- {
- CursorCursorcurrentCursor=Cursor.Current;
- try
- {
- Cursor.Current=Cursors.WaitCursor;
- objectarg1=0;objectarg2="";objectarg3="";objectarg4="";
- axWebBrowser1.Navigate(urlComboBox1.Text,refarg1,refarg2,refarg3,refarg4);
- }
- finally
- {
- Cursor.Current=currentCursor;
- }
- }
運行,測試就可以了.到此,你也可以自己試著做一個自己的、個性化的瀏覽器了。以上介紹C#記憶功能的地址欄控件。
【編輯推薦】