Подтвердить что ты не робот

Как выбрать элемент в ListView программно?

Я пытаюсь выбрать первый элемент в ListView программно, но он, похоже, не был выбран. Я использую следующий код:

if (listView1.Items.Count > 0)
    listView1.Items[0].Selected = true;

На самом деле у меня была эта проблема раньше, но я не помню, как мне удалось ее решить!

4b9b3361

Ответ 1

Скорее всего, элемент выбирается, вы просто не можете сказать, потому что другой элемент управления имеет фокус. Существует несколько способов, которые вы можете решить, в зависимости от дизайна вашего приложения.

  • Простым решением является установка фокуса на ListView сначала всякий раз, когда отображается ваша форма. Пользователь обычно устанавливает фокус на элементы управления, нажимая на них. Однако вы также можете указать, какие элементы управления получают фокус программно. Один из способов сделать это - установить индекс вкладок элемента управления в 0 (самое низкое значение указывает элемент управления, который будет иметь начальный фокус). Вторая возможность заключается в использовании следующей строки кода в форме Load событие или сразу после установки свойства Selected:

    myListView.Select();
    

    Проблема с этим решением заключается в том, что выбранный элемент больше не будет отображаться, если пользователь устанавливает фокус на другой элемент управления в форме (например, текстовое поле или кнопка).

  • Чтобы исправить это, вам нужно установить свойство HideSelection управления ListView равным False. Это заставит выделенный элемент оставаться выделенным, даже если управление теряет фокус.

    Когда элемент управления имеет фокус, выбранный фон элемента будет окрашен цветом системы. Когда элемент управления не имеет фокуса, выбранный фон элемента будет окрашен в цвет системы, используемый для текста с серым (или отключенным).

    Вы можете установить это свойство либо во время разработки, либо через код:

    myListView.HideSelection = false;
    

Ответ 2

if (listView1.Items.Count > 0)
{
    listView1.Items[0].Selected = true;
    listView1.Select();
}
Элементы списка

не отображаются, если элемент управления не имеет фокуса (или вы устанавливаете для свойства HideSelection значение false)

Ответ 3

Я думаю, что проблема и решение были написаны сером серого! У меня есть дополнительная заметка.

Проверьте фокус указанного элемента списка (и элемент управления!). Я мог бы установить фокус и выделение со следующими строками кода:

this.listView1.Items[1].Selected = true;
this.listView1.Items[1].Focused = true;

Но сосредоточенный контроль был условием!

Ответ 4

        int i=99;//is what row you want to select and focus
        listViewRamos.FocusedItem = listViewRamos.Items[0];
        listViewRamos.Items[i].Selected = true;
        listViewRamos.Select();
        listViewRamos.EnsureVisible(i);//This is the trick

Ответ 5

if (listView1.Items.Count > 0)
{
    listView1.FocusedItem = listView1.Items[0];
    listView1.Items[0].Selected = true;
    listView1.Select();
}

Ответ 6

ListViewItem.IsSelected = true;
ListViewItem.Focus();