梦-开始的地方

Frederick

博客园 首页 新随笔 联系 订阅 管理
 

 

使用过IE的人应该对自动完成并不陌生,它可以帮助使用者快速输入曾经输入过的内容,

图表 1 IE的自动完成

 

这个是在网页上的过去有人问过,“自动完成在Windows Form 中是否可行?”答案在.NET Framework 1.x 中没有此公能,需要使用者自行开发。在.NET Framework 2.0 中已经内建了此功能,本文介绍.Net Framework 2.0 Windows Form 自动完成。

 

自动完成属性:

Windows Form 中的TextBoxComboBox…等文字框类的控件支持自动完成属性,通过这些属性的制定,可以指定自动完成功能的不同形式:

 

AutoCompleteMode属性

       指定自动完成的形式,可以设定NoneSuggestAppendSuggestAppend几种形式。默认值是None,不使用自动完成模式。设定为Append模式时,会在输入后自动将资料来源中的文字加入到方框中。(图2)设定为SuggestAppend模式时,不会自动补齐资料,而是弹出列表供用户选择(图3

图表 2    Append                                                           图表 3SuggestAppend

 

 

 

 

 

AutoCompleteSource属性:

设定自动完成资料的来源。可以设定NoneAllSystemSourceAllUrlCustomSourceFileSystemFileSystemDirectoriesFileSystemFileSystemDirectoriesHistoryListRecentlyUsedList等多项。

 

AutoCompleteCustomSource属性

AutoCompleteSource的属性设置为CustomSource时,可以用此属性自定义自动完成字符串。

 

 

自定来源

       为了应付更多非文档或Url的要求,AutoCompleteSource 属性提供CustomSource选项让开发人员可以透过AutoCompleteCustomSource属性指定更多资料来源以便符合更多类型的需要。

 

AutoCompleteCustomSource属性是AutoCompleteStringCollection的形态,支持AddAddRange等方法以加入需要的字符串,如例:

VB.Net

Dim member() As String = {“one”,”two”}

TextBox2.AutoCompleteCustomSource.AddRange(member)

 

新输入的资料不会加入自动完成清单的解决方法

需要使用Add()方法,系统不会自动加入

 

结束程序,再启动,以前的自动完成清单不见了?

       程序结束后再启动,你会发现先前所加入的清单不见了?没错,那是因为之前的资料(自动完成的字符串集合)只保留在内存中,当应用程序结束后,内存中的资料也随之消失,解决方法是将内存中的资料存档,方法当然有很多了。可以使用FileStream  StreamWriter 等,在这里,我推荐使用Windows应用程序设定的功能(就是App.Config)设定中有专门的AutoCompleteStringCollection类型可以供存贮,关于方法大家可以查阅MSDN的资料在这里我就不再废话了。

 

结束语

Windows Form .Net 2.0中终于有了自动完成功能,这个功能可以套用到TextBoxComboBox等文字输入类的控制项,配合应用程序的设定档,可以达到更完整的功能。

posted on 2005-11-25 16:39  Frederick  阅读(1067)  评论(0)    收藏  举报