2017-01-06 4 views
0

私は国名のリストボックスを持っています。私はVS2015(C#)でWindowsフォームを使用しています。
listBoxで名前を選択しているときは、1文字しか入力できません。つまり、 "A"と入力すると "A"で始まる最初の項目にジャンプしますが、 "As"を押すと "s"で始まる項目をリストボックスに表示します。 コンボボックスとテキストボックスでこの回答が見つかりました:
Selecting an item in comboBox by typing
しかし、リストボックスのようなオートコンプリートモードはサポートされていません。 解決策はありますか?Windowsでアイテムを選択するには、?

+0

http://stackoverflow.com/questions/7562989/listbox-items-as-autocompletecustomsource- for-a-textbox –

+0

私はあなたがDropDownStyle.Simpleでコンボボックスを使ってはるかに良いと思います。 – NicoRiff

+0

[this](https://www.codeproject.com/tips/881637/type-ahead-suggestion-box-using-リストボックス)を参照してください。 – CodingYoshi

答えて

1

独自の検索方法を実装することを検討してください。 ListBoxは、設計上必要な機能をサポートしていません。とにかく、TextBoxのTextChangedイベントのメソッドを準備して、その時点でコレクション内の結果を検索します。

0

あなたがDropDownStyle.Simpleでコンボボックスを使用する必要があります。 ListBoxはこの機能を持たないことを意図したものではありませんでした。

サードパーティのコントロールを検討することもできます。例えば、Telerikは、DropDownListをComboBoxに拡張しています。これは、あなたがやりたいことを、それがどのように行うかというオプションとともに行います。

+0

アドバイスをいただきありがとうございます。私は別の解決方法を選択しました。私は複数選択オプションが必要ですし、ComboBoxには1つもありません。 –

0

ここにいくつかのサンプルコードがあります。 ListBoxの上にTextBoxをドロップします。適切に配線しTextChangedイベントを、この(例えば)コンボボックスのオートコンプリートの動作を模倣する必要があります...

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 

     listBox1.Items.Add("Tom"); 
     listBox1.Items.Add("Dick"); 
     listBox1.Items.Add("Harry"); 
     listBox1.Items.Add("Henry"); 
    } 

    private void textBox1_TextChanged(object sender, EventArgs e) 
    { 
     TextBox oTextBox = (TextBox)sender; 
     int iListIndex = oTextBox.TextLength == 0 ? -1 : listBox1.FindString(oTextBox.Text); 
     listBox1.SelectedIndex = iListIndex; 
    } 
} 
関連する問題