猜想输入法

19 篇文章 0 订阅

什么是猜想输入


当我们在使用查询应用时,输入某个关键字后文本框下面就会自动弹出跟此关键字相附的词组供我们选择,为我们节省了输入的时间,这就是猜想输入,例如:百度,谷歌,等等,如下图:

如上图所示,使用WinFormTextBox实现了这样的效果,主要借助于TextBoxAutoCompleteModeAutoCompleteSource以及AutoCompleteCustomSource属性。

详细参数


AutoCompleteMode

获取或设置控制自动完成如何作用于TextBox的选项。

属性值

Append 将最可能的候选字符串的其余部分追加到现有的字符,并突出显示追加的字符。

Suggest 显示与编辑控件关联的辅助下拉列表。此下拉列表填充了一个或多个建议完成字符串。

SuggestAppend 追加 Suggest Append 选项。

None 禁用自动完成这是默认值。

 

AutoCompleteSource 获取或设置一个值,该值指定用于自动完成的完整字符串的源。

AutoCompleteCustomSource获取或设置在AutoCompleteSource 属性设置为 CustomSource 时使用的自定义System.Collections.Specialized.StringCollection

 

如下图:

代码设计


TextBoxRemind

View Code?

publicclassTextBoxRemind

{

privatestring[] array = null;

publicvoidInitAutoCompleteCustomSource(TextBox  textBox)

{

array = ReadTxt();

if(array != null&&  array.Length > 0)

{

AutoCompleteStringCollection ACSC = newAutoCompleteStringCollection();

for(inti = 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;

}

returnFile.ReadAllLines("Remind.txt",  Encoding.Default);

}

catch

{

returnnull;

}

}

publicvoidRemind(stringstr)

{

StreamWriter writer = null;

try

{

if(array != null&&  !array.Contains(str))

{

writer = newStreamWriter("Remind.txt",  true, Encoding.Default);

writer.WriteLine(str);

}

}

finally

{

if(writer != null)

{

writer.Close();

writer = null;

}

}

}

}

历史记录

由于存储的都是文本数据,所以采用了文本文档进行存储,轻量级操作方便,系统会自动创建Remind.txt文件。

加载窗体时首先初始化InitAutoCompleteCustomSource,添加AutoCompleteStringCollection,当我们点击确认后重新初始化数据源,加载之前录入的关键字。

View Code?

publicpartialclassForm1 : Form

{

privateTextBoxRemind remind = null;

publicForm1()

{

InitializeComponent();

remind = newTextBoxRemind();

InitTextBoxRemind();

}

voidInitTextBoxRemind()

{

remind.InitAutoCompleteCustomSource(textBox1);

}

privatevoidbutton1_Click(objectsender, EventArgs e)

{

if(textBox1.Text.Trim() != "")

{

remind.Remind(textBox1.Text.Trim());

InitTextBoxRemind();

}

}

}

最后


大家经常遇到使用StreamReaderStreamWriter时中文不能正常显示,一个简单的方法就是将Encoding设置为Default即可。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值