利用C#制作一个仿IE地址栏的文本框-Read.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
利用C#制作一个仿IE地址栏的文本框-Read.doc

利用C#制作一个仿IE地址栏的文本框 利用IE上网时,只要在地址栏中输入几个字母,与这几个字母模糊匹配的地址就会自动显示出来供用户选择(如下图),用户通过按键盘上的上、下箭头在已有选项中遍历,找到自己需要的选项后,按回车键进行选择,也可以直接用鼠标进行操作,非常方便,我们在程序中也可以利用这一功能,实现自动提示,方便用户输入,下面就以一个实际例子介绍我在工作中是如何实现的。 从上图中可以看出,最佳的办法似乎就是继承ComboBox写一个控件,在TextChanged事件中,根据内容变化决定是否应拉下提示框,以及该提示什么内容,在实际工作中我们发现,ComboBox非常难以控制,如修改了SelectedIndex属性后,会自动产生TextChanged事件,造成死循环等等,虽然可以添加其他一些变量来标记该文本改变是用户引起的还是由程序引起的以进行区别对待处理,但效果始终不理想,经过反复试验,最后选择了文本框+列表框的方式,并做成控件库供其他程序调用,效果很理想,其中,文本框接收用户输入,列表框提供选项让用户选择。 新建一个普通的windows应用程序用来测试,不妨取名为Test吧,然后单击菜单“文件”→“添加项目”→“新建项目(N)”,从弹出来的对话框选择“windows控件库”,将该项目和Test项目放在同一个文件夹中,不妨取名为“TextBoxExt”,该项目是本文的重点。 在“解决方案资源管理器” 中,右键单击“TextBoxExt”项目,从弹出的菜单中选择“属性”,会弹出属性配置对话框,在左上角的“配置(C)”中选择“所有配置”,设置输出路径为“..\output”,注意,该输入有点特殊,两个小数点+反斜杠+output,意思是当前文件夹上一层的ouput文件夹(从VC过来的朋友可能比较熟悉这种方式),如下图: 编译一下,在“我的电脑”或“资源管理器”中我们可以就可以看到与TextBoxExt文件夹同一级自动创建了一个output文件夹,输出的TextboxExt.dll乖乖地躺在这里: 再来配置一下依赖性,点菜单“项目”→“设置依赖性(D)”,设置项目Test取决于“TextBoxExt”,至此,开发环境配置完毕。 在“解决方案资源管理器” 中双击“UserControl1.cs”文件,再切换到代码窗口中。为便于引用,我们将命名空间“namespace TextBoxExt”改为“namespace Tools”,由于本控件继承于文本框,因此,将代码 public class UserControl1 : System.Windows.Forms.UserControl { public UserControl1() { InitializeComponent(); } 修改为: public class TextBoxExt : System.Windows.Forms.TextBox { private System.ComponentModel.Container components = null; public TextBoxExt() { } 也就是说将命名空间改为Tools,将类名改为TextBoxExt,让该类继承于System.Windows.Forms.TextBox,并修改相应的构造函数。编译成功后,在“解决方案资源管理器中”双击项目“Test”的“Form1.cs”来切换到窗体设计,在“工具箱”窗口中切换到“我的用户控件”选项中,在空白处单击右键,从弹出的菜单中选择“添加/移出项”,接下来会弹出一个对话框,点“浏览”按钮,找到刚才生成的控件库,如下图: 最后点“确定”按钮,在“工具箱”的“我的控件库”中就多了一个“TextBoxExt”控件,同操作普通文本框控件一样,在窗体上添加几个该自定义控件。可以看出,该文本框和平时使用的文本框目前完全一样。 切换到UserControl1.cs代码设计窗口中,添加一个列表框变量,用于显示提示: private System.Windows.Forms.ListBox m_lstShowChoice=null; 添加一段代码,用于响应列表框鼠标的MouseUp事件,也就是用户通过单击列表框进行选择: private void lstBox_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) { ListBox box=(ListBox)sender; if((box.SelectedIndex-1) !this.ReadOnly) { this.Text=box.SelectedItem.ToString()

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档