2011-07-06 3 views
3

私はTextBoxをwinformに持っており、TextBoxのAutoCompleteSourceCustomSourceと設定しています。ここで、問題はフォームに他のフィールドを設定し、それに応じてユーザーがオートコンプリートリストからオプションを選択することです。
たとえば、自動完全リストには"foo", "food", "foomatic"が含まれています。ユーザーが'f'と入力すると、3つのオプションがすべて表示されます。ユーザーは"foo"を選択します。フォームの次のテキストボックスはそれに応じて変更されます。これを達成する方法。

ありがとうございます。ユーザーがテキストボックスの正しいオートコンプリートオプションを選択したときに他のフィールドを設定する

+0

を(選択は、マウスやキーボードで行う場合は関係ありませんか)? – V4Vendetta

+0

ユーザーが新しい文字を入力するたびに 'TextChanged'イベントが発生します。しかし、私はユーザーが最後にオプションを選択したときにそのイベントをキャプチャしたい。 –

+0

あなたは 'Validating'または' Validated'を選択することができますが、私はあなたがフォーカスを失わなければならないと考えています – V4Vendetta

答えて

1

テキストボックスは、オートコンプリートリストを下に移動するときに「下向き」矢印キーのキーイベントを発生させます。また、選択した項目テキストをテキストボックスに設定します。他のフィールドを設定するには、下キーをトラッキングすることができます。

また、ユーザーがキーまたはマウスを入力して押し、リスト内の項目を選択した場合に発生しますキーを、「入力」のキーイベントをキャプチャすることができ、私はにコンボボックスを使用しました

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); 

今、イベントはそれだけでオートコンプリートのポップアップウィンドウからだ場合でも、選択した値に解雇されています。このオプションを得ることができます。あなたは `TextChanged`イベントであることを取得しないでください

Autocomplete on Combobox

関連する問題