C# 有记忆功能的地址栏控件
2007-03-24 16:14
676 查看
今天在做搜索引擎的资料准备,无意见到了cocosoft的文章,于是,按照原文一步一步,做了下来,运行后,感觉挺不错的,跟我前面写过的c#读取网页有些相识,但多了个地址栏的记忆功能.
本文描述了如何建立一个简单的、常用的用户控件——地址栏。
你只需要输入部分字符,它在其下拉列表框中,就显示出来与你所输入相关的内容(记忆功能)。
如果只要求输入字符串就可以的话。那么,我们可以直接使用TextBox等控件完成输入框。但如果你要让你的输入框有记忆功能的话。那么,我们所需要的就是要求能把以前所输入的内容读取出来。
我们从下面开始讲解如何让我们的地址栏有记忆功能的。
建立自己的地址栏:
首先,我们要分两步走。
第一步,我们首先要明白我们IE地址栏的历史记忆内容是从哪来的。因为只有知道它是从哪来的,我们才能明白我们的数据。
先看一下,IE在regedit(注册表)里面都有些什么内容。因为regeidt是Windows里面一个非常不错的数据库,它可以把整台机子相关的一些东西都存放在里面。
在regedit里面,与IE相关的内容有这些:
我们要的是“Software\Microsoft\Internet Explorer\TypedURLs”的数据。不然,我们写的记忆功能就起不了什么作用了。或者,出现一些其它数据。要知道,在regedit里面保存的数据可都是一些关键数据。如果一不小心被人XX掉的话,那么,L。
OK,现在已经找到我们要的数据是从什么地方来的了。那么,我们就要开始打造我们自己的带记忆功能的地址栏了。
那么,达到这些够了吗?当然,够是够了。但,你不想让你的地址栏功能再强大一点吗?那么,我们写这样的一个类来看看:
1、 新建项目,选择新建类库,名字就顺意了。比如:ControlSet.URLControl。
2、 在资源管理里面添加引用System.Windows.Forms.dll。
3、 然后,在资源管理器里面把Class1.cs改为UnManagedMethods.cs,然后,用下面的代码替换:
using System;
using System.Runtime.InteropServices;
namespace ControlSet.URLControl
using System;
using Microsoft.Win32;
using System.Windows.Forms;
namespace ControlSet.URLControl
我们的带记忆功能的地址栏已经构建完成。你可以在菜单【生成(B)】里面,调试生成解决方案。
建立示例程序:
1、 新建项目,选择Windows应用程序,名称:TestrulComboBox。
2、 我们把我们所需要的控件放到工具箱里面。在工具箱上面点右键。添加/移除项。打开Com组件,选择刚才项目生成的ControlSet.URLControl.dll。
3、 把刚才添加到工具箱上面的Microsoft Web 浏览器控件,和ControlSet.URLControl.dll控件,拖放到主窗口上,并进行排列。
4、 添加一个控钮。并在它的事件中输入如下代码:
private void btnSure_Click(object sender, System.EventArgs e)
{
Cursor currentCursor = Cursor.Current;
try
{
Cursor.Current = Cursors.WaitCursor;
object arg1 = 0; object arg2 = ""; object arg3 = ""; object arg4 = "";
axWebBrowser1.Navigate(urlComboBox1.Text,ref arg1,ref arg2, ref arg3, ref arg4);
}
finally
{
Cursor.Current = currentCursor;
}
}
运行,测试就可以了.
到此,你也可以自己试着做一个自己的、个性化的浏览器了。
本文描述了如何建立一个简单的、常用的用户控件——地址栏。
你只需要输入部分字符,它在其下拉列表框中,就显示出来与你所输入相关的内容(记忆功能)。
如果只要求输入字符串就可以的话。那么,我们可以直接使用TextBox等控件完成输入框。但如果你要让你的输入框有记忆功能的话。那么,我们所需要的就是要求能把以前所输入的内容读取出来。
我们从下面开始讲解如何让我们的地址栏有记忆功能的。
建立自己的地址栏:
首先,我们要分两步走。
第一步,我们首先要明白我们IE地址栏的历史记忆内容是从哪来的。因为只有知道它是从哪来的,我们才能明白我们的数据。
先看一下,IE在regedit(注册表)里面都有些什么内容。因为regeidt是Windows里面一个非常不错的数据库,它可以把整台机子相关的一些东西都存放在里面。
在regedit里面,与IE相关的内容有这些:
我们要的是“Software\Microsoft\Internet Explorer\TypedURLs”的数据。不然,我们写的记忆功能就起不了什么作用了。或者,出现一些其它数据。要知道,在regedit里面保存的数据可都是一些关键数据。如果一不小心被人XX掉的话,那么,L。
OK,现在已经找到我们要的数据是从什么地方来的了。那么,我们就要开始打造我们自己的带记忆功能的地址栏了。
那么,达到这些够了吗?当然,够是够了。但,你不想让你的地址栏功能再强大一点吗?那么,我们写这样的一个类来看看:
1、 新建项目,选择新建类库,名字就顺意了。比如:ControlSet.URLControl。
2、 在资源管理里面添加引用System.Windows.Forms.dll。
3、 然后,在资源管理器里面把Class1.cs改为UnManagedMethods.cs,然后,用下面的代码替换:
using System;
using System.Runtime.InteropServices;
namespace ControlSet.URLControl
using System;
using Microsoft.Win32;
using System.Windows.Forms;
namespace ControlSet.URLControl
我们的带记忆功能的地址栏已经构建完成。你可以在菜单【生成(B)】里面,调试生成解决方案。
建立示例程序:
1、 新建项目,选择Windows应用程序,名称:TestrulComboBox。
2、 我们把我们所需要的控件放到工具箱里面。在工具箱上面点右键。添加/移除项。打开Com组件,选择刚才项目生成的ControlSet.URLControl.dll。
3、 把刚才添加到工具箱上面的Microsoft Web 浏览器控件,和ControlSet.URLControl.dll控件,拖放到主窗口上,并进行排列。
4、 添加一个控钮。并在它的事件中输入如下代码:
private void btnSure_Click(object sender, System.EventArgs e)
{
Cursor currentCursor = Cursor.Current;
try
{
Cursor.Current = Cursors.WaitCursor;
object arg1 = 0; object arg2 = ""; object arg3 = ""; object arg4 = "";
axWebBrowser1.Navigate(urlComboBox1.Text,ref arg1,ref arg2, ref arg3, ref arg4);
}
finally
{
Cursor.Current = currentCursor;
}
}
运行,测试就可以了.
到此,你也可以自己试着做一个自己的、个性化的浏览器了。
相关文章推荐
- c# xptable NET中最强,最全功能的表格控件
- C#自定义控件:扩展控件功能
- C# WINFORM 某些控件实现联想输入功能
- c# winform TreeView控件中实现拖拽的功能
- c#控件实现类似c++中ocx控件功能,Event事件
- C# Combobox控件实现模糊查询功能
- C# WinForm实现窗体上控件自由拖动功能示例
- C#控件picturebox实现画图功能
- ae+C#实现图层管理控件上的图层移动功能
- 重写C#的TextBox控件达到无法粘贴,无法输入特定字符功能
- C#第十周任务之最后一项之创建一个如下的窗体,并在窗体上放置一个菜单、一个工具栏控件。菜单内容如第二个图所示。工具栏上有两个按钮,分别对应“打开文本文件”、“保存文本文件”。菜单和工具栏具体功能实现可
- C# 实现完整功能的截图控件(1)-实现绘图工具栏控件(转载)
- C# 向 ListView 控件添加搜索功能
- C#:一个具有拖入和删除功能的图片框控件
- c# winform TreeView控件中实现拖拽的功能
- 【转】C# 实现完整功能的截图控件(1)-实现绘图工具栏控件
- C#_ComboBox控件实现自记忆输入的内容
- C# 实现完整功能的截图控件(1)-实现绘图工具栏控件 控件实现了截图、绘制矩形、圆形、箭头、线条、文字,还需要可以撤销绘制步骤、保存图形等功能,基本实现了跟QQ2008截图一样的功能,还可以更
- 如何使数据绑定的控件实现“上一条”、“下一条”、“第一条”和“最后一条”的功能?(WinForm, C#)
- c#打印预览控件中实现用鼠标移动页面功能代码分享