当前位置: 首页 > news >正文

C# :WinForm TextBox猜想输入和历史记录输入

(文章转载自:http://www.cnblogs.com/zhaoblogs/archive/2011/12/07/2278938.html)

什么是猜想输入


   

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

 

 

      如上图所示,使用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即可。

 

 

 

转载于:https://www.cnblogs.com/Alvin-x/p/3232574.html

相关文章:

  • 并发服务器:Redis案例研究分析
  • POJ 3041 Asteroids (最小点覆盖集)
  • 不通过调用__Init__来创建实例
  • 算法学习--动手
  • 10-padding(内边距)
  • linux中grep和egrep的用法
  • hashlib模块学习:hmac
  • 开发基于以太坊智能合约的DApp
  • vue-cli脚手架一些插件安装elementui和axios
  • MD5加密解密
  • MS SQL 需要定期清理日志文件
  • Django-admin管理工具
  • Spring读书笔记-----部署我的第一个Spring项目
  • 减少死锁的几个常用方法
  • ylbtech-cnblogs(博客园)-数据库设计-7,News(新闻)
  • 11111111
  • 30秒的PHP代码片段(1)数组 - Array
  • Android Volley源码解析
  • Android 架构优化~MVP 架构改造
  • Java|序列化异常StreamCorruptedException的解决方法
  • PHP变量
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 翻译--Thinking in React
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 欢迎参加第二届中国游戏开发者大会
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • ------- 计算机网络基础
  • 京东美团研发面经
  • 如何胜任知名企业的商业数据分析师?
  • 使用docker-compose进行多节点部署
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 跳前端坑前,先看看这个!!
  • 通过npm或yarn自动生成vue组件
  • 为视图添加丝滑的水波纹
  • 协程
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • Java总结 - String - 这篇请使劲喷我
  • 阿里云服务器购买完整流程
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 积累各种好的链接
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​卜东波研究员:高观点下的少儿计算思维
  • (1)(1.11) SiK Radio v2(一)
  • (1)(1.9) MSP (version 4.2)
  • (C语言)字符分类函数
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • **PHP分步表单提交思路(分页表单提交)
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)