什麼是聯想輸入

 

當我們在使用查詢時,輸入某個關鍵字後,下面就會自動彈出跟此相關的字詞讓我們選擇,可以節省輸入的時間,這就是聯想輸入。例如:google、百度等等。

 

如下圖

如上圖所示,使用WinForm的TextBox 實現這個效果,主要是用TextBox的AutoCompleteMode、AutoCompleteSource和AutoCompleteCustomSource屬性

 

-----------------------------------------------------------------------------------------------------------------------------

 

  AutoCompleteMode  獲取或設置自動完成如何作用於TextBox的選項 

 

      屬性

 

      Append  將最可能的候選字符串的其餘部分追加到現有的字符,並突出顯示追加的字符。

 

      Suggest  顯示與編輯控件關聯的輔助下拉列表。此下拉列表填充了一個或多個建議完成字符串。

 

      SuggestAppend  追加 Suggest 和 Append 選項。

 

      None  禁用自動完成 這是默認值。

      AutoCompleteSource 獲取或設置一個值,該值指定用於自動完成的完整字符串的源。

      AutoCompleteCustomSource 獲取或設置在AutoCompleteSource 屬性設置為CustomSource 時使用的自定義System.Collections.Specialized.StringCollection。

 

如下圖:

 

程式碼:

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();
        }
    }
}

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 yl9111524 的頭像
    yl9111524

    coding 筆記

    yl9111524 發表在 痞客邦 留言(0) 人氣()