C# TextBox猜想输入和历史记录输入
什么是猜想输入
当我们在使用查询应用时,输入某个关键字后文本框下面就会自动弹出跟此关键字相附的词组供我们选择,为我们节省了输入的时间,这就是猜想输入,例如:百度,谷歌,等等,如下图:
如上图所示,使用WinForm的TextBox实现了这样的效果,主要借助于TextBox的AutoCompleteMode和AutoCompleteSource以及AutoCompleteCustomSource属性。
详细参数
AutoCompleteMode
获取或设置控制自动完成如何作用于TextBox的选项。
属性值
Append 将最可能的候选字符串的其余部分追加到现有的字符,并突出显示追加的字符。
Suggest 显示与编辑控件关联的辅助下拉列表。 此下拉列表填充了一个或多个建议完成字符串。
SuggestAppend 追加 Suggest 和 Append 选项。
None 禁用自动完成 这是默认值。
AutoCompleteSource 获取或设置一个值,该值指定用于自动完成的完整字符串的源。
AutoCompleteCustomSource 获取或设置在 AutoCompleteSource 属性设置为 CustomSource 时使用的自定义 System.Collections.Specialized.StringCollection。
如下图:
代码设计
TextBoxRemind
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;
}
}
}
}
历史记录
由于存储的都是文本数据,所以采用了文本文档进行存储,轻量级操作方便,系统会自动创建Remind.txt文件。
加载窗体时首先初始化InitAutoCompleteCustomSource,添加AutoCompleteStringCollection,当我们点击确认后重新初始化数据源,加载之前录入的关键字。
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即可。
附
【转自】http://www.cnblogs.com/zhaoblogs/archive/2011/12/07/2278938.html
C# TextBox猜想输入和历史记录输入的更多相关文章
- WinForm中TextBox 中判断扫描枪输入与键盘输入
本文转载:http://www.cnblogs.com/Hdsome/archive/2011/10/28/2227712.html 提出问题:在收货系统中,常常要用到扫描枪扫描条码输入到TextBo ...
- 不让input表单的输入框保存用户输入的历史记录
如何不让input表单的输入框保存用户输入的历史记录. 有时我们在设计网页时不想让表单保存用户输入历史记录,比如一些隐私数据,或一些冲值卡 <input name="test&quo ...
- ASP.Net TextBox控件只允许输入数字
原文:ASP.Net TextBox控件只允许输入数字 1.1.在Asp.Net TextBox 控件的 OnKeyPress 事件中指定输入键盘码必须为数字: <asp:TextBox ID= ...
- input text 不显示输入的历史记录
当之前的text框输入了数据后,下次输入有历史记录问题的解决方法 怎么禁止输入框记录输入记录,双击input出现输入过的记录, 有过表单设计经验的朋友肯定知道,当我们在浏览器中输入表单信息的时候,往往 ...
- 【转】C#中判断扫描枪输入与键盘输入
提出问题:在收货系统中,常常要用到扫描枪扫描条码输入到TextBox,当条码无法扫描时,需要手工输入.如果是扫描枪输入时,我们将自动去判读条码,而手工输入时,最终需要加按回车键确认后判读条码.这时候我 ...
- 转载:python原生态的输入窗口抖动+输入特效
python原生态的输入窗口抖动+输入特效 出处:https://coding.net/u/acee/p/PythonPowerInput/git/blob/master/test_power_inp ...
- c# 输入姓名直到输入的是quit时,停止输入然后显示出输入的姓名个数及姓名
1.输入姓名直到输入的是quit时(不区分大小写),停止输入然后显示出输入的姓名个数及姓名: 要求结果如下图所示: class Program { static void Main(string[] ...
- js限制输入数字能输入小数点,js定义数组,js往数组中添加数据,js将字符型转为数字型,除法结果保留两位小数——js小测:计算比赛得分
一个朋友跟我说要去给某个比赛算分: 规则:去掉最低分最高分求平均分: 最近在学习大数据可视化——图谱,用到js一些东西,所以今天就用js练练 用到知识点: js限制输入数字能输入小数点,js定义数组, ...
- 代码实现程序启动后, 可以从键盘输入接收多个整数, 直到输入quit时结束输入. 把所有输入的整数倒序排列打印
package com.loaderman.test; import java.util.Comparator; import java.util.Scanner; import java.util. ...
随机推荐
- SRS用例
团队项目:超市管理系统 作者:王琨 个人博客地址:http://www.cnblogs.com/wangkun123 一. 用例视图概述 一般的超市商品管理系统,主要由五大模块组成,即商品信 ...
- HelloWorld.php
没有写博的习惯,从今天开始.近期学习了下php,分享下我的第一个PHP. 工具:Hbuider+Wampserver 利用Wampserver就可以完成PHP脚本的编写和运行,本人之所以选择安装HBu ...
- win10下安装GLPK
认识GLPK GLPK是一个解决线性规划问题的工具.是GNU计划下一个用于解线性规 划(Linear Programming)的工具包.它可以方便的描述线性规划问题,并给出相应解. 因此在linux系 ...
- ubuntu在windows下的wubi安装
转自:http://mp.weixin.qq.com/s?__biz=MjM5NjYxNjU0OQ==&mid=200664819&idx=2&sn=25719890570b1 ...
- PAT 1021 个位数统计
https://pintia.cn/problem-sets/994805260223102976/problems/994805300404535296 给定一个k位整数N = d~k-1~*10^ ...
- Linux shell 菜鸟学习笔记....
20171123 Linux shell 基础学习笔记1. shell 的开始 一般是 #!/bin/bash 通过 #! 来唯一指定使用的shell路径 其他的 # 都表示注释.2. shell 的 ...
- Oracle 和 SQLSERVER 重新获取统计信息的方法
1. Oracle 重新获取统计信息的命令 exec dbms_stats.gather_schema_stats(ownname =>) # 需要修改 ownername options 指定 ...
- hadoop故障及其应对
为更好了解各种故障,可以修改数据块的大小和提升NameNode的日志级别 <property> <name>dfs.block.size</name> <va ...
- rabbitmq代码配置
package com.qukoucai.test; import com.rabbitmq.client.AMQP;import com.rabbitmq.client.AMQP.BasicProp ...
- js條件結構和循環結構
條件結構: if(語句1) if(語句1)else(語句2) if(語句1)elseif(語句2)else(語句3) switch結構: switch() { case 1: break: case ...