- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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()
您可能关注的文档
- 公司2016年面向合格投资者公开发行公司债券(第一期).doc
- 公开金钥密码系统.ppt
- 公用部落格简介.ppt
- 公职人员财产申报Q&A-台南市政府.doc
- 六页合辑.doc
- 共享式网络部署方式.ppt
- 共青团信息第四期-太原理工大学.doc
- 关于2016正考须知.doc.doc
- 关于STEP函数得问题.doc
- 关于塑造良好形象,并不是说在他人面前保持着完美的无懈可击的形象.doc
- 跨境电商平台用户画像分析技术在电商平台用户增长策略中的应用.docx
- 低空经济政策解读白皮书:2025年中国低空产业发展趋势.docx
- 农业企业数字化种植效率提升策略与案例研究.docx
- 2025年电池热管理系统在新能源汽车动力电池热失控预防中的应用.docx
- 2025年电池热管理系统在新能源汽车电池热平衡控制中的应用.docx
- 2025年保险数字化理赔服务理赔服务与保险业人才培养报告.docx
- 2025年仿制药一致性评价对药品生产行业知识产权保护的影响研究.docx
- 2025年中小学STEAM教育项目可持续发展研究报告.docx
- 2025年储能技术在提升电网新能源消纳能力中的应用前景报告.docx
- 商业银行金融科技人才选拔与培养策略报告:2025年行业洞察与案例分析.docx
文档评论(0)