Я пытаюсь поставить SelectedIndex в виде выпадающего списка в верхней части отображаемого списка с этим кодом:ListBox TopIndex не работает
private void textBox1_TextChanged(object sender, EventArgs e)
{
sourceListBox.SelectionMode = SelectionMode.One;
if (textBox1.Text != string.Empty)
{
int index = sourceListBox.FindString(textBox1.Text);
if (index != -1 && sourceListBox.SelectedIndex != index)
{
sourceListBox.ClearSelected();
sourceListBox.SetSelected(index, true);
sourceListBox.TopIndex = sourceListBox.SelectedIndex;
}
}
else
{
sourceListBox.ClearSelected();
}
sourceListBox.SelectionMode = SelectionMode.MultiExtended;
}
Но выбранный индекс застрял в нижней части ListBox:
И это только часть кода, которые изменяют поведение ListBox. Как это исправить?
Вы уверены, что другой код не изменит TopIndex? Например, в событии SelectedIndexChanged? – Steve
@Steve событие не связано, я почти уверен, что никакого кода не изменит его –
Я думаю, что у вас есть логическая проблема. Если ваш текущий SelectedIndex равен результату FindString, вы никогда не вводите код, который устанавливает TopIndex. На вашем изображении первый элемент, который соответствует содержимому текстового поля, уже является SelectedIndex, поэтому код не выполняется – Steve