C#记忆功能的地址栏控件

开发 后端
本文描述了如何建立一个简单的、常用的用户控件——地址栏控件。你只需要输入部分字符,它在其下拉列表框中,就显示出来与你所输入相关的内容。

C#记忆功能的地址栏控件

今天在做搜索引擎的资料准备,无意见到了cocosoft的文章,于是,按照原文一步一步,做了下来,运行后,感觉挺不错的,跟我前面写过的c#读取网页有些相识,但多了个地址栏控件的记忆功能.

本文描述了如何建立一个简单的、常用的用户控件——地址栏控件。
你只需要输入部分字符,它在其下拉列表框中,就显示出来与你所输入相关的内容(记忆功能)。

如果只要求输入字符串就可以的话。那么,我们可以直接使用TextBox等控件完成输入框。但如果你要让你的输入框有记忆功能的话。那么,我们所需要的就是要求能把以前所输入的内容读取出来。

我们从下面开始讲解如何让我们的地址栏控件有记忆功能的。

建立自己的地址栏:
首先,我们要分两步走。
第一步,我们首先要明白我们IE地址栏的历史记忆内容是从哪来的。因为只有知道它是从哪来的,我们才能明白我们的数据。
先看一下,IE在regedit(注册表)里面都有些什么内容。因为regeidt是Windows里面一个非常不错的数据库,它可以把整台机子相关的一些东西都存放在里面。
在regedit里面,与IE相关的内容有这些:
我们要的是“Software\Microsoft\Internet Explorer\TypedURLs”的数据。不然,我们写的记忆功能就起不了什么作用了。或者,出现一些其它数据。要知道,在regedit里面保存的数据可都是一些关键数据。如果一不小心被人XX掉的话,那么,L。
OK,现在已经找到我们要的数据是从什么地方来的了。那么,我们就要开始打造我们自己的带C#记忆功能的地址栏控件了。
那么,达到这些够了吗?当然,够是够了。但,你不想让你的地址栏功能再强大一点吗?那么,我们写这样的一个类来看看:

1、新建项目,选择新建类库,名字就顺意了。比如:ControlSet.URLControl。
2、在资源管理里面添加引用System.Windows.Forms.dll。
3、然后,在资源管理器里面把Class1.cs改为UnManagedMethods.cs,然后,用下面的代码替换:

  1. usingSystem;  
  2. usingSystem.Runtime.InteropServices;  
  3. namespaceControlSet.URLControl  
  4. {  
  5. [StructLayout(LayoutKind.Sequential)]  
  6. internalstructRect  
  7. {  
  8. publicintleft;  
  9. publicinttop;  
  10. publicintright;  
  11. publicintbottom;  
  12. }  
  13. [StructLayout(LayoutKind.Sequential)]  
  14. internalstructComboBoxInfo  
  15. {  
  16. publicintcbSize;  
  17. publicRectrcItem;  
  18. publicRectrcButton;  
  19. publicIntPtrstateButton;  
  20. publicIntPtrhwndCombo;  
  21. publicIntPtrhwndEdit;  
  22. publicIntPtrhwndList;  
  23. }  
  24. ///<summary> 
  25. ///AllunmanagedDllImportmethodsusedinthisassembly  
  26. ///</summary> 
  27. internalclassUnManagedMethods  
  28. {  
  29. [DllImport("User32.dll")]  
  30. internalstaticexternboolGetComboBoxInfo
    (IntPtrhwndCombo,refComboBoxInfoinfo);  
  31. [DllImport("Shlwapi.dll")]  
  32. internalstaticexternvoidSHAutoComplete(IntPtrhwnd,IntPtrflags);  
  33. }  

第二步,我们的地址栏出现了。那么,要用什么做为它的基控件呢?

因为我们要有记忆功能,那么,当然,要有一个能下拉的东西了。什么?ComboBox就是最好的选择。那好,我们开始用ComboBox来构建我们自己的控件。

建立示例程序:
1、新建项目,选择Windows应用程序,名称:TestrulComboBox。

2、我们把我们所需要的控件放到工具箱里面。在工具箱上面点右键。添加/移除项。打开Com组件,选择刚才项目生成的ControlSet.URLControl.dll。

3、把刚才添加到工具箱上面的Microsoft Web 浏览器控件,和ControlSet.URLControl.dll控件,拖放到主窗口上,并进行排列。

4、添加一个控钮。并在它的事件中输入如下代码:

  1. privatevoidbtnSure_Click(objectsender,System.EventArgse)  
  2. {  
  3. CursorCursorcurrentCursor=Cursor.Current;  
  4. try  
  5. {  
  6. Cursor.Current=Cursors.WaitCursor;  
  7. objectarg1=0;objectarg2="";objectarg3="";objectarg4="";  
  8. axWebBrowser1.Navigate(urlComboBox1.Text,refarg1,refarg2,refarg3,refarg4);  
  9. }  
  10. finally  
  11. {  
  12. Cursor.Current=currentCursor;  
  13. }  

运行,测试就可以了.到此,你也可以自己试着做一个自己的、个性化的浏览器了。以上介绍C#记忆功能的地址栏控件。

【编辑推荐】

  1. 分析C#不安全代码
  2. 浅析C#调用ImageAnimator
  3. C#连接Access、SQL Server数据库
  4. 浅谈C#固定的和活动的变量
  5. 介绍C#中的值类型
责任编辑:佚名 来源: 百度空间
相关推荐

2009-07-16 14:13:35

Swing地址栏

2011-02-25 09:03:03

Chrome

2009-08-07 13:03:10

C#控件数组

2009-03-30 08:58:52

Firefox浏览器

2011-06-28 09:23:22

Firefox地址栏

2011-02-21 14:10:50

Chrome

2015-12-01 10:43:55

2011-10-09 09:16:59

JavaScript

2021-01-06 08:05:47

Chrome浏览器

2012-07-16 16:23:29

Firefox浏览器

2011-11-04 15:28:49

傲游浏览器

2011-05-20 16:07:29

C#

2021-05-27 15:06:41

Chrome浏览器Google

2012-11-06 13:17:05

Chrome浏览器

2018-09-17 13:39:14

Chrome浏览器网址

2011-05-20 17:23:41

Chrome 13

2009-08-11 14:45:41

C# DataGrid

2009-08-18 17:41:22

C# ListView

2011-05-24 11:12:51

Chrome

2009-08-24 11:23:41

C# TimeLabe
点赞
收藏

51CTO技术栈公众号