在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
我想,现在已无法考证是谁先发明联想输入(suggest)这种很人性化的输入方式的,也无法说清林是C/S框架下先用,还是B/S框架中先用。我们也不用讨论前面这些问题,我只想说大家都知道联想输入指的什么吧?如果不明白,那百度或GOOGLE的搜索输入框就应用了这种输入技术,即你输入一个“js”,它可能会跟你联想出相关的词条来,比如:JS特效,js冲突等,当然,本文是在c# form中实现的联想输入外加历史输入,当然有人把联想输入称着suggest哟...算是跟你扩展点知识吧!下面我们就来具体讲解在c# form中实现的方案: 如上图所示,使用WinForm的TextBox实现了这样的效果,主要借助于TextBox的AutoCompleteMode和AutoCompleteSource以及AutoCompleteCustomSource属性。 详细参数
AutoCompleteMode 获取或设置控制自动完成如何作用于TextBox的选项。 属性值 Append 将最可能的候选字符串的其余部分追加到现有的字符,并突出显示追加的字符。 Suggest 此下拉列表填充了一个或多个建议完成字符串。 SuggestAppend 追加 Suggest 和 Append 选项。 None 这是默认值。
AutoCompleteSource 获取或设置一个值,该值指定用于自动完成的完整字符串的源。 AutoCompleteCustomSource 获取或设置在 AutoCompleteSource 属性设置为 CustomSource 时使用的自定义 System.Collections.Specialized.StringCollection。 如下图: 代码: public class TextBoxRemind
{ private string[] array = null; public void InitAutoCompleteCustomSource(TextBox textBox) { array = ReadTxt(); if (array != null && array.Length > 0) { AutoCompleteStringCollection ACSC = new AutoCompleteStringCollection(); for (int i = 0; i < array.Length; i++) { ACSC.Add(array[i]); } textBox.AutoCompleteCustomSource = ACSC; } } string[] ReadTxt() { try { if (!File.Exists("Remind.txt")) { FileStream fs = File.Create("Remind.txt"); fs.Close(); fs = null; } return File.ReadAllLines("Remind.txt", Encoding.Default); } catch { return null; } } public void Remind(string str) { StreamWriter writer = null; try { if (array != null && !array.Contains(str)) { writer = new StreamWriter("Remind.txt", true, Encoding.Default); writer.WriteLine(str); } } finally { if (writer != null) { writer.Close(); writer = null; } } } } 历史记录 public partial class Form1 : Form
{ private TextBoxRemind remind = null; public Form1() { InitializeComponent(); remind = new TextBoxRemind(); InitTextBoxRemind(); } void InitTextBoxRemind() { remind.InitAutoCompleteCustomSource(textBox1); } private void button1_Click(object sender, EventArgs e) { if (textBox1.Text.Trim() != "") { remind.Remind(textBox1.Text.Trim()); InitTextBoxRemind(); } } } 最后说点题外话:大家经常遇到使用StreamReader和StreamWriter时中文不能正常显示,一个简单的方法就是将Encoding设置为Default即可。附上源码,以便参考: [点击浏览该文件:TextBoxRemindTest.zip] |
请发表评论