winform textbox 的自动实现功能
好久没写博客了,主要是太懒了,之前因为做bs的比较多现在想转cs端了,虽然现在做cs也一年了,可接触的东西太过零碎了,以至于感觉这一年好像什么都没有学到。估计是因为学了之后没有记录,不扎实,然后又忘记了吧,
估计就这样陷入无限循环了。所以说学到的还是记录一下比较好!
早上来到,看到的一篇文章,写的是winform textbox 自动实现的,觉得还是挺有用的,就在这里记录一下吧。ps:以前也写过一篇jq插件的自动实现,感觉其原理还是一样的。无非就是匹配数据源而已。
使用的原生态textbox的
相关属性
AutoCompleteMode
1 // 摘要: 2 // 指定在 System.Windows.Forms.ComboBox 和 System.Windows.Forms.TextBox 控件中使用的自动完成功能的模式。 3 public enum AutoCompleteMode 4 { 5 // 摘要: 6 // 禁用 System.Windows.Forms.ComboBox 和 System.Windows.Forms.TextBox 控件的自动完成功能。 7 None = 0, 8 // 9 // 摘要: 10 // 显示与编辑控件关联的辅助下拉列表。 此下拉列表填充了一个或多个建议完成字符串。 11 Suggest = 1, 12 // 13 // 摘要: 14 // 将最可能的候选字符串的其余部分追加到现有的字符,并突出显示追加的字符。 15 Append = 2, 16 // 17 // 摘要: 18 // 同时应用 Suggest 和 Append 选项。 19 SuggestAppend = 3, 20 }
AutoCompleteCustomSource 数据源
AutoCompleteSource 获取或设置一个值,该值指定用于自动完成的完整字符串的源。
// // 摘要: // 获取或设置一个值,该值指定用于自动完成的完整字符串的源。 // // 返回结果: // System.Windows.Forms.AutoCompleteSource 值之一。 这些选项为 AllSystemSources、AllUrl、FileSystem、HistoryList、RecentlyUsedList、CustomSource // 和 None。 默认值为 None。 // // 异常: // System.ComponentModel.InvalidEnumArgumentException: // 指定的值不是 System.Windows.Forms.AutoCompleteSource 值之一。 [Browsable(true)] [EditorBrowsable(EditorBrowsableState.Always)] public AutoCompleteSource AutoCompleteSource { get; set; }
示例代码 :
1 protected override void OnLoad(EventArgs e) 2 { 3 base.OnLoad(e); 4 5 txtTest.AutoCompleteMode = AutoCompleteMode.Suggest; //设置匹配数据源的模式 6 7 var source = new AutoCompleteStringCollection(); 8 source.AddRange(new string[] { 9 "January", 10 "February", 11 "March", 12 "April", 13 "May", 14 "June", 15 "July", 16 "August", 17 "September", 18 "October", 19 "November", 20 "December" 21 }); 22 23 txtTest.AutoCompleteCustomSource = source; //设置数据源 24 txtTest.AutoCompleteSource = AutoCompleteSource.CustomSource; //数据源的类型 25 }