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. ...
随机推荐
- Kruskal算法-HDU1863畅通工程
链接 [http://acm.hdu.edu.cn/showproblem.php?pid=1863] 题意 Problem Description 省政府"畅通工程"的目标是使全 ...
- 20135337——Linux实践三:程序破解
程序破解 查看 运行 反汇编,查看汇编码 对反汇编代码进行分析: 在main函数的汇编代码中可以看出程序在调用"scanf"函数请求输入之后,对 [esp+0x1c] 和 [esp ...
- springboot整合druid连接池、mybatis实现多数据源动态切换
demo环境: JDK 1.8 ,Spring boot 1.5.14 一 整合durid 1.添加druid连接池maven依赖 <dependency> <groupId> ...
- mysql外键关联
主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来和其他表建立联系用的.所以说,如果谈到了外键,一定是至少涉及到两张表 ...
- 队列----java实现
FIFO:先进先出 存储单元: public class Node { /* 元素有两部分: 元素 下一个元素的引用 */ Object data;//数据域 Node next; //指针域 pub ...
- ThinkPad E470 win10,重装win10专业版后无声音
解决办法: 1.官网下载笔记本对应的声卡驱动并安装 2.下载热键驱动并安装 3.重启笔记本即可 参考:https://blog.csdn.net/u012369373/article/details/ ...
- laravel 数据库获取值的常用方法
---恢复内容开始--- find($id) 需要一个主键$id并返回一个模型对象,若不存在则返回null findOrFail($id) 需要一个主键$id并返回一个模型对象,若不存在则发生错误,抛 ...
- Linux下OSG的编译和安装以及遇到的问题
(第一段日常扯蛋,大家不要看)由于我们教研室所做的RTMapper要用到GDAL,所以就打算看osgearth的源码来熟悉下GDAL库的使用,同时也了解下osgearth中关于带有高程的图像拼接.然而 ...
- modern effective C++ -- Deducint Types
1. 理解模板类型推导 1. expr是T& template<typename T> void f(T & param); // 我们声明如下变量 int x = 27; ...
- FICO基础知识(二)
FI中的maser data: COA (Chart Of Account) 科目表 Account 科目 Vendor master dada 供应商主数据 Customer master da ...