2014-10-27 47 views
1

IDE:C#.net,Winforms,.net 4.0如何用帶姓和名的文本框綁定建議?

我想綁定一個文本框與建議,建議將來自一個列表,該列表是有空間分隔的單詞例如'小Jhon'現在與以下代碼的幫助我實現了建議功能,但我希望當用戶輸入任何內容時,建議應該來自兩個單詞,目前它僅來自第一個單詞。

代碼:

private void BindTournamentNames() 
    { 

//On Load Code 
     List<String> lstNames= new List<string>(); 
     lstNames.Add("Little John"); 
     lstNames.Add("Hello Yogesh"); 



     var source = new AutoCompleteStringCollection(); 
     txtBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 

     source.AddRange(lstNames.ToArray()); 

     txtBox1.AutoCompleteCustomSource = source; 

     txtBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 
     txtBox1.AutoCompleteSource = AutoCompleteSource.CustomSource; 

    } 

現在,當我打字的文字框「小」這是給我的建議,但是當我打字約翰它是不是給我的建議,請告訴我如何做到這一點。

+0

我不認爲這個功能存在,你可能需要自己做 – Vajura 2014-10-27 09:05:46

+0

您能否提供 – yogeshkmrsoni 2014-10-27 09:06:42

+0

分割空間上的「姓名」, - 這意味着你必須兩個'的名字要補充。 – 2014-10-27 09:07:41

回答

0

現有的autoComplete功能只支持前綴搜索。我在我的一個項目中有相同的要求。所以我所做的是 -

TextBox正下方增加了一個ListBox,並將其默認可見性設置爲false。然後使用文本框的OnTextChanged事件和列表框的SelectedIndexChanged事件來顯示和選擇項目。像這樣 -

注意:假設你的BindTournamentNames()方法在窗體的構造函數中調用。

protected void textBox1_TextChanged(object sender, System.EventArgs e) 
{ 
    listBox1.Items.Clear(); 
    if (textBox1.Text.Length == 0) 
    { 
     listBox1.Visible = false; 
     return; 
    } 

    foreach (String s in textBox1.AutoCompleteCustomSource) 
    { 
     if (s.Contains(textBox1.Text)) 
     { 
      listBox1.Items.Add(s); 
      listBox1.Visible = true; 
     } 
    } 
} 

protected void listBox1_SelectedIndexChanged(object sender, System.EventArgs e) 
{ 
    textBox1.Text = listBox1.Items[listBox1.SelectedIndex].ToString(); 
    listBox1.Visible = false; 
} 

好運...