2016-08-15 61 views
0

我想設置自動完成到使用LINQ到實體的文本框。自動完成與TextBox C中的任何字符#

這是我的代碼:

using (Reference_TraductionEntities context = new Reference_TraductionEntities()) 
{ 
    var source = new AutoCompleteStringCollection(); 

    var name = from a in context.Feuil1Prenom 
       where a.PRENOMF.StartsWith("i") 
       select a.PRENOMF; 
    source.AddRange(name.ToArray()); 

    textBox1.AutoCompleteCustomSource = source; 
    textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 
    textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource; 
} 

此代碼是OK,但只是以字符「I」, 我想在文本框中任何字符輸入

如何解決它自動完成?

感謝,

+1

然後替換開始以「我」開始textbox1.text? – BugFinder

+1

如果你只是刪除在哪裏會發生什麼? – ntohl

+0

如果我刪除在哪裏,我得到錯誤:vshost32.exe停止工作! – devtunis

回答

0

非常感謝BugFinder !!!!

我換成「我」與textbox1.text開始啓動......

using (Reference_TraductionEntities context = new Reference_TraductionEntities()) 
{ 
    var source = new AutoCompleteStringCollection(); 
    var name = from a in context.Feuil1Prenom 
       where a.PRENOMF.StartsWith(textBox1.Text) 
       select a.PRENOMF; 
    source.AddRange(name.ToArray()); 

    textBox1.AutoCompleteCustomSource = source; 
    textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 
    textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource; 
} 

它的工作原理!

0

就試試這個

this.textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 
this.textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource; 

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
TextBox t = sender as TextBox; 
if (t != null) 
{ 
    //say you want to do a search when user types 3 or more chars 
    if (t.Text.Length >= 3) 
    { 
     //SuggestStrings will have the logic to return array of strings either from cache/db 
     string[] arr = SuggestStrings(t.Text); 

     AutoCompleteStringCollection collection = new AutoCompleteStringCollection(); 
     collection.AddRange(arr); 

     this.textBox1.AutoCompleteCustomSource = collection; 
    } 
    } 
}