模拟IE地址栏的TextBox小控件

记得CSDN上面以前曾经有人问过,有没有像IE地址栏那样能够自动记忆以前输入过的文字,然后通过下拉列表选择的控件。我的印象是.NET没有提供这样的控件,众多.NET高人肯定做过,但是我一时找不到。这几天无聊,于是自己试着做了一个。

主控件是一个继承自TextBox的类,然后一个成员控件ListBox。一个ArrayList保存了所有用户曾经在这个TextBox里面输入过的内容。

Public Class ComboTextBox

    Inherits Windows.Forms.TextBox

Private WithEvents lbInput As System.Windows.Forms.ListBox

Private m_ComboList As ArrayList

End Class

TextBox.Enter的时候,自动显示ListBox,并且根据用户在TextBox里面已经输入的内容查找ArrayList里面的项目,通过String.StartWith方法提取符合的项目,然后添加到ListBox里面。(如果TextBox里面没有任何文字,就全部显示所有的ArrayList里面的内容)

For Each item In Me.m_ComboList

If item.ToLower.StartsWith(header.ToLower) = True Then

Me.lbInput.Items.Add(item)

End If

Next

TextBox.Validated的时候,将用户输入到TextBox里面的文字作为合法的输入文字添加到ArrayList里面去。同时隐藏ListBox

这个小控件是一时高兴做的,所以没有特别全面的测试。我把源代码放上来,欢迎园子里面的哥哥姐姐们给我指点指点。如果您有什么更好的想法,非常欢迎Feedback

 

源代码和Sample合并在一个Solution里面下载

posted @ 2005-04-19 16:51  妖居  阅读(1922)  评论(3编辑  收藏  举报