答えを探しましたが、文字列型のアイテムでリストボックスを使用するときに機能するものがありますが、アイテムが型の場合に変換する方法がわかりません
KeyValuePair<string, ChangeRec>
キー(テキスト)アイテムで検索して、リストボックスに入力するときに検索できるようにしたい(フォーム上でコントロールを特定のサイズにする必要があるため、ComboBoxを使用できません)。出発点を提供してくれた@Marcel Popescuに感謝します。これが私のバージョンのコードです(kvpアイテムを文字列として正しくキャストできないため、失敗した行の上にのみコメントを付けました):
private string searchString;
private DateTime lastKeyPressTime;
private void lbElementNames_KeyPress(object sender, KeyPressEventArgs e)
{
this.IncrementalSearch(e.KeyChar);
e.Handled = true;
}
private void IncrementalSearch(char ch)
{
if ((DateTime.Now - this.lastKeyPressTime) > new TimeSpan(0, 0, 1))
{
this.searchString = ch.ToString();
}
else
{
this.searchString += ch;
}
this.lastKeyPressTime = DateTime.Now;
//* code falls over HERE *//
var item =
this.lbElementNames.Items.Cast<string>()
.FirstOrDefault(it => it.StartsWith(this.searchString, true, CultureInfo.InvariantCulture));
if (item == null) return;
var index = this.lbElementNames.Items.IndexOf(item);
if (index < 0) return;
this.lbElementNames.SelectedIndex = index;
}