2011-07-06 52 views
3

我有一個WinForm中的文本框,並將文本框的AutoCompleteSource設置爲CustomSource。現在問題是相應地設置窗體中的其他字段,用戶從自動完成列表中選擇一個選項。
例如,我的自動完成列表包含"foo", "food", "foomatic"。當用戶鍵入'f'時,會顯示所有三個選項。用戶選擇"foo"。並且表單中的下一個文本框會相應更改。如何完成這一點。

在此先感謝。當用戶爲文本框選擇一個正確的自動完成選項時設置其他字段

+0

你不拿到在'TextChanged'事件? – V4Vendetta

+0

每次用戶輸入新字符時,都會觸發'TextChanged'事件。但是我想要在用戶最終選擇一個選項時捕獲事件。 –

+0

然後你可以選擇驗證或驗證,但我認爲你將不得不失去焦點 – V4Vendetta

回答

1

當您沿着自動完成列表行進時,文本框觸發「向下」箭頭鍵的關鍵事件;它還將選定的項目文本設置爲文本框。您可以跟蹤向下鍵以設置其他字段。

或者,您可以捕捉「Enter」鍵,它提出的關鍵事件,如果用戶選擇在列表中按輸入項目鍵或鼠標點擊

private void textBox1_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter) 
    { 
     //Check if the Text has changed and set the other fields. Reset the textchanged flag 
     Console.WriteLine("Enter Key:" + textBox1.Text); 
    } 
    else if (e.KeyCode == Keys.Down) 
    { 
     //Check if the Text has changed and set the other fields. Reset the textchanged flag 
     Console.WriteLine("Key Down:" + textBox1.Text); 
    } 
} 

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    //this event is fired first. Set a flag to record if the text changed. 
    Console.WriteLine("Text changed:" + textBox1.Text); 
} 
+0

這個解決方案不是我想要的,但的確是一個好方法。 –

1

我用組合框獲得此選項:

// Create datasource 
    List<string> lstAutoCompleteData = new List<string>() { "first name", "second name", "third name"}; 

    // Bind datasource to combobox 
    cmb1.DataSource = lstAutoCompleteData; 

    // Make sure NOT to use DropDownList (!) 
    cmb1.DropDownStyle = ComboBoxStyle.DropDown; 

    // Display the autocomplete using the binded datasource 
    cmb1.AutoCompleteSource = AutoCompleteSource.ListItems; 

    // Only suggest, do not complete the name 
    cmb1.AutoCompleteMode = AutoCompleteMode.Suggest; 

    // Choose none of the items 
    cmb1.SelectedIndex = -1; 

    // Every selection (mouse or keyboard) will fire this event. :-) 
    cmb1.SelectedValueChanged += new EventHandler(cmbClientOwner_SelectedValueChanged); 

目前,該事件是在選擇,即使它只是從自動完成彈出窗口的價值被解僱。 (如果選擇用鼠標或鍵盤進行並不重要)

Autocomplete on Combobox

相關問題