Chức năng AutoComplete của Textbox trong C#


GIỚI THIỆU

Chào các bạn!

Hôm nay mình xin nói sơ về chức năng khá hay của Textbox đó là AutoComplete
Chức năng Autocomplete giúp gợi ý, tự hoàn thiện từ khi gõ của Textbox C#: Đây là một chức năng khá hay và làm tăng tính chuyên nghiệp của phần mềm bạn làm lên rất nhiều!
Chức năng AutoComplete của Textbox trong C#

Nó gồm có 3 thuộc tính:

AutocompleteCustomSource 
Là một Collection, nơi chứa những từ gợi ý. Khi gõ vào những từ gần giống trong này thì nó sẽ xuất hiện gọi ý. (chỉ dùng làm nguồn cho chế độ CustomSource).
Ta có thể thêm từ vào đây bằng code thông qua AutoCompleteStringCollection. Hoặc thêm vào thông qua Properties ở ngoài giao diện form:

 
 AutoCompleteMode 
Là kiểu gợi ý. Có 3 chế độ là
   + Suggest: gợi ý ở dạng danh sách, muốn chọn phải ấn chuột hoặc ấn phím di chuyển
   + Append: khi gõ từ gần đúng thì nó sẽ hoàn thiện luôn
   + SuggestAppend: (nên dùng) nó kết hơp cả 2 cái trên. Tức là sẽ vừa hiện thị danh sách gợi ý vừa hoàn thiện luôn.


 AutocompleteSoure  
  + CustomSource: lấy những từ đã gõ trong AutocompleteCustomSource để gợi ý
   + HistoryList: lấy những từ đã gõ để gợi ý
   + Các mode còn lại ít dùng nên mình sẽ không đề cập ở đây.

Sau đây là đoạn code tham khảo về cách thiết lập AutoComplete bằng code:

 private void Form1_Load(object sender, EventArgs e)
 {
       LoadDataToCollection();
       SetDataToCollection();
 }
 

//Thêm bằng tay vào Collection các từ khóa
 private void SetDataToCollection()
 {
       AutoCompleteStringCollection auto1 = new AutoCompleteStringCollection();
       txtBox1.AutoCompleteMode = AutoCompleteMode.Append;
       txtBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
       txtBox2.AutoCompleteMode = AutoCompleteMode.Suggest;
       txtBox2.AutoCompleteSource = AutoCompleteSource.CustomSource;
       string[] arrayName ={"Tâm",
                          "Nhã",
                          "Sơn",
                          "Phúc",
                          "Huyền",
                          "Ngân",
                          "Tấn Huy",
                          "Huy Tôi",
                          "Nguyễn ",
                          "iceteaviet.blogspot.com",
                          "iceteaviet.blogspot.com/2015/07/lam-quen-voi-textbox-trong-c.html",
                          "iceteaviet.blogspot.com/2015/07/hoc-c-thi-bat-au-tu-au.html",
                          "iceteaviet.blogspot.com/2015/07/oi-tuong-button.html"
                               
                          };
       foreach (string name in arrayName) 
       {
           auto1.Add(name);
       }
 
       txtBox1.AutoCompleteCustomSource = auto1;
       txtBox2.AutoCompleteCustomSource = auto1;
}


//Thêm các từ khóa từ cơ sở dữ liệu (các bạn nào chưa học qua SQL Ser thì khỏi quan tâm nhé)
private void LoadDataToCollection()
{
      AutoCompleteStringCollection auto2 = new AutoCompleteStringCollection();
           
      string strConnection = "Data Source=.\\SQLEXPRESS; Database=Northwind;Integrated Security=true;";
      SqlConnection conn = new SqlConnection();
      conn.ConnectionString = strConnection;
      SqlCommand cmd = new SqlCommand();
      cmd.Connection = conn;
      cmd.CommandType = CommandType.Text;
 
      string sql = "Select  ContactName from Customers ";
      SqlCommand com = new SqlCommand();
 
      com.Connection = conn;
      com.CommandText = sql;
      com.CommandType = CommandType.Text;
      conn.Open();
      SqlDataReader reader ;
      reader = com.ExecuteReader();
      if(reader!=null)
      {
             while(reader.Read())
             {
                auto2.Add(reader["ContactName"].ToString());
             }
      }
 
      txtName1.AutoCompleteMode = AutoCompleteMode.Append;
      txtName1.AutoCompleteSource = AutoCompleteSource.CustomSource;
      txtName1.AutoCompleteCustomSource = auto2;
 
      txtName2.AutoCompleteMode = AutoCompleteMode.Suggest;
      txtName2.AutoCompleteSource = AutoCompleteSource.CustomSource;
      txtName2.AutoCompleteCustomSource = auto2;
 
 
}

TỔNG KẾT
Chức năng AutoComplete của textbox thường được dùng để làm gợi ý cho khung tra từ điển, danh bạ. Hoặc các phần mềm có mục điền thông tin thay vì dùng Combobox bạn có thể dùng textbox với Autocomplete sẽ làm cho phần mềm bạn trở nên chuyên nghiệp hơn nhiều.
Các bạn cũng có thể tự built cho mình một Control Autocomplete như thế. Tham khảo bài viết của tác giả Psycho Coder Tại đây. Hoặc tham khảo thêm tại đây và trên MSDN

Chào các bạn và chúc các bạn học tốt :D Hẹn gặp lại ở bài sau!


Post a Comment

[facebook][blogger]

Contact Form

Name

Email *

Message *

Powered by Blogger.
Javascript DisablePlease Enable Javascript To See All Widget