Убедитесь, что ListViewItem отображается в ListView - PullRequest
0 голосов
/ 24 августа 2011

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

У меня вопрос, как сделать так, чтобы текущее текущее действие показывалось пользователю, то есть как «прокрутить» представление списка до этого элемента.

Я пытался вручную выбрать строку ==> не сработало. Я использовал ListViewItem.EnsureVisible, но это заставляло ListView мерцать при каждом изменении.

Есть идеи? Спасибо.

Отредактировано: я добавил некоторый код, хотя код довольно прост. Всякий раз, когда запускается новое действие, я запускаю следующее:

foreach (ListViewItem item in m_ListView.Items)
{
    FontStyle style = ((index == value) ? FontStyle.Bold : FontStyle.Regular);
    item.Font = new Font(item.Font, style);

    if (index == value)
    {                        
         m_ModulesListView.EnsureVisible(index);
    }

    index++;
}

Ответы [ 3 ]

2 голосов
/ 24 августа 2011

Возможно, вам следует позвонить ListView.BeginUpdate() до вашего цикла и ListView.EndUpdate() после вашего цикла.

2 голосов
/ 24 августа 2011

Вы имеете в виду

listView1.EnsureVisible(listView1.Items.Count - 1);
0 голосов
/ 24 августа 2011

Нашли хорошее решение .Он включает в себя использование Win32, но он делает свою работу.По-видимому, в списке можно установить двойную буферизацию, которая решает проблему мерцания.Таким образом, использование EnsureVisible с двойной буферизацией прекрасно работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...