Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Auto-complete ComboBox không thể chọn được những items trùng nhau

  1. #1
    Ngày gia nhập
    05 2010
    Bài viết
    505

    Mặc định Auto-complete ComboBox không thể chọn được những items trùng nhau

    Mình có làm 1 auto-complete ComboBox theo hướng dẫn ở đây http://forums.congdongcviet.com/showthread.php?t=1172

    Xin phép đc copy lại code
    Visual C# Code:
    1. using System;
    2. using System.Windows.Forms;
    3.  
    4. public class AutoCompleteComboBox : ComboBox {
    5.  
    6.     // Biến cờ dùng khi một phím đặc biệt được nhấn
    7.     // (trong trường hợp này, thao tác thay thế text sẽ bị bỏ qua).
    8.     private bool controlKey = false;
    9.  
    10.     // Xác định xem phím đặc biệt có được nhấn hay không.
    11.     protected override void OnKeyPress(
    12.       System.Windows.Forms.KeyPressEventArgs e) {
    13.  
    14.         base.OnKeyPress(e);
    15.  
    16.         if (e.KeyChar == (int)Keys.Escape) {
    17.        
    18.             // Xóa text.
    19.             this.SelectedIndex = -1;
    20.             this.Text = "";
    21.             controlKey = true;
    22.         }
    23.         else if (Char.IsControl(e.KeyChar)) {
    24.        
    25.             controlKey = true;
    26.         }
    27.         else {
    28.        
    29.             controlKey = false;
    30.         }
    31.     }
    32.  
    33.     // Thực hiện thay thế text.
    34.     protected override void OnTextChanged(System.EventArgs e) {
    35.    
    36.         base.OnTextChanged(e);
    37.  
    38.         if (this.Text != "" && !controlKey) {
    39.        
    40.             // Tìm kiếm item trùng khớp.
    41.             string matchText = this.Text;
    42.             int match = this.FindString(matchText);
    43.  
    44.             // Nếu tìm thấy thì chèn nó vào.
    45.             if (match != -1) {
    46.            
    47.                 this.SelectedIndex = match;
    48.  
    49.                 // Chọn (bôi đen) phần text vừa thêm vào để
    50.                 // nó có thể được thay thế nếu người dùng kiếp tục gõ.
    51.                 this.SelectionStart = matchText.Length;
    52.                 this.SelectionLength =
    53.                   this.Text.Length - this.SelectionStart;
    54.             }
    55.         }
    56.     }
    57. }

    code hoạt động tốt tuy nhiên có 1 vấn đề là nếu có nhiều item gần giống nhau thì chỉ chọn đc items dài nhất. Ví dụ có 2 items gần giống nhau là Nguyễn Thị Trà và Nguyễn Thị Trà Giang thì không thể chọn đc Nguyễn Thị Trà mà nó luôn luôn chọn Nguyễn Thị Trà Giang, kể cả type Nguyễn Thị Trà hay click chọn Nguyễn Thị Trà thì nó cũng tự nhảy qua Nguyễn Thị Trà Giang.

    Các pac thử nghiên cứu code trên và tư vấn giúp cách xử lý mới. Thanks

  2. #2
    Ngày gia nhập
    12 2010
    Bài viết
    683

    Ủa có trong thuộc tính của combobox rồi mà!!!!!!!

    Code chi mệt vậy!!!

    Hình như thiết lập là ở 2 thuộc tính AutoComPleteSource và AutoComPleteMode

Các đề tài tương tự

  1. C#- Các giá trị trong combobox ko được trùng nhau??
    Gửi bởi manasuke trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 15-09-2012, 05:20 PM
  2. Tạo ComboBox có tính năng auto-complete trong lập trình C#
    Gửi bởi baokhanhk28 trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 4
    Bài viết cuối: 18-03-2012, 02:24 AM
  3. Lỗi add items vào combobox bằng linq
    Gửi bởi nguyendongbb trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 08-11-2011, 11:11 AM
  4. Gán giá trị cho Items của Combobox trong C# như thế nào?
    Gửi bởi copper123 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 01-04-2011, 10:46 AM
  5. Hỏi về tính năng auto complete của combo box
    Gửi bởi start_89 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 0
    Bài viết cuối: 10-07-2009, 08:51 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn