使用过IE的人应该对自动完成并不陌生,它可以帮助使用者快速输入曾经输入过的内容,
图表 1 IE的自动完成
这个是在网页上的过去有人问过,“自动完成在Windows Form 中是否可行?”答案在.NET Framework 1.x 中没有此公能,需要使用者自行开发。在.NET Framework 2.0 中已经内建了此功能,本文介绍.Net Framework 2.0 的Windows Form 自动完成。
自动完成属性:
Windows Form 中的TextBox、ComboBox…等文字框类的控件支持自动完成属性,通过这些属性的制定,可以指定自动完成功能的不同形式:
AutoCompleteMode属性
指定自动完成的形式,可以设定None、Suggest、Append、SuggestAppend几种形式。默认值是None,不使用自动完成模式。设定为Append模式时,会在输入后自动将资料来源中的文字加入到方框中。(图2)设定为SuggestAppend模式时,不会自动补齐资料,而是弹出列表供用户选择(图3)
图表 2 Append 图表 3SuggestAppend
AutoCompleteSource属性:
设定自动完成资料的来源。可以设定None、AllSystemSource、AllUrl、CustomSource、FileSystem、FileSystemDirectories、FileSystem、FileSystemDirectories、HistoryList、RecentlyUsedList等多项。
AutoCompleteCustomSource属性
当AutoCompleteSource的属性设置为CustomSource时,可以用此属性自定义自动完成字符串。
自定来源
为了应付更多非文档或Url的要求,AutoCompleteSource 属性提供CustomSource选项让开发人员可以透过AutoCompleteCustomSource属性指定更多资料来源以便符合更多类型的需要。
AutoCompleteCustomSource属性是AutoCompleteStringCollection的形态,支持Add和AddRange等方法以加入需要的字符串,如例:
|
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中终于有了自动完成功能,这个功能可以套用到TextBox及ComboBox等文字输入类的控制项,配合应用程序的设定档,可以达到更完整的功能。
浙公网安备 33010602011771号