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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值