C#のWinFormsのを許可しないオートコンプリートコンボボックスを持って、私はコンボボックスに入力するときに、今SuggestAppendは、カスタムテキスト
を、それをその項目のリストから項目を示唆している。良い。しかし、問題は、私が欲しいものをタイプすることができたくないということです。リストにある有効なアイテムからタイプできるようにしたいだけです。この部分はどのように修正できますか?
ありがとうございました。
C#のWinFormsのを許可しないオートコンプリートコンボボックスを持って、私はコンボボックスに入力するときに、今SuggestAppendは、カスタムテキスト
を、それをその項目のリストから項目を示唆している。良い。しかし、問題は、私が欲しいものをタイプすることができたくないということです。リストにある有効なアイテムからタイプできるようにしたいだけです。この部分はどのように修正できますか?
ありがとうございました。
あなたは自分の価値観(手動またはデータバインディングを介した)とアイテムリストを移入する必要があり、その後、DropDownList
にDropDownStyleを設定すると思います。
コンボボックスはテキストボックスのようには見えませんが、フォーカスがあるときは、それを入力するとアイテムリストから最もよく一致するものが自動的に選択されます。
(それはカスタムテキストを許可しないようにコンボボックスを設定するための推奨方法です。)
代わりに、あなたは、スタイルがドロップダウンになりたいコントロールのKeyPress
イベントをキャプチャし、簡単なチェックを行いたい場合コントロールのテキストにe.KeyChar
を加え、リストに見つからない場合はe.Handled = True
と設定します。これにより、リストに含まれていない単語が表示されるすべてのキー押下がブロックされます。
コンボボックスコントロールは、これを直接サポートしていません。
ハンドラを作成して、リストの項目が入力されたことを確認し、そうでない場合はユーザーに確認する必要があります。
これは自動完了に似ていませんが、DropDownStyleをDropDownListに設定すると、Itemsコレクション内のエントリのみが許可されます。しかし、このモードのデフォルトの動作は、あなたが入力したすべての文字が、その文字で始まる最初の一致にジャンプすることです。そのため、最初の文字を超える文字を続けて入力できるようにするには、AutoCompleteSourceをListItemsに設定し、AutoCompleteModeをAppendに設定します。
その他のオプションはTextChanged
またはTextUpdated
イベントに登録されている可能性があります。すでに入力されたテキストが条件に合わない場合は、適切に変更してください。
これは、この動作するコンボボックスの文字列と一致します。
int index = combobox1.FindString(combobox1.Text);
if (index < 0)
{
MessageBox.Show("Invalid Record");
combobox1.Focus();
return;
}
ありがとうございますが、動作しません。はい、それは私たちが好きなものを入力するのを防ぐが、それはまた、オートコンプリートを破る。それでも入力することはできますが、リスト全体が表示され、フィルタリングされません。 – Bohn
別の解決策を追加しました。 – MCattle
良いトリックは、今それを試してみます。 – Bohn