Прокрутка ListView с колесиком мыши иногда отменяет прокрутку - PullRequest
4 голосов
/ 04 февраля 2010

У меня проблемы с просмотром списка Win32, и я надеюсь, что у кого-то есть мудрость.При очень быстрой прокрутке (с помощью колесика) иногда вид списка отображается для прокрутки, только для возврата к выбранному элементу, чтобы он находился в поле зрения.Другими словами, список отменяет прокрутку колесика, чтобы показать выбранный элемент в верхней / нижней части списка.Я понимаю, что это звучит очень сомнительно, так как общие элементы управления были забиты до смерти во всем мире.

Вот как вы можете копировать:

  1. Загрузите просмотр списка в режиме отчета примерно с500 штук или около того (точное количество не имеет значения, вам просто нужно несколько экранов данных).
  2. Выберите элемент в списке и запомните, что вы выбрали.
  3. Быстро прокрутите список колесом вниз (к вам).Мы пытаемся прокрутить выбранный элемент как можно быстрее.Вы, вероятно, должны использовать больше силы, чем вы обычно используете на колесе.Это не всегда происходит.Возможно, вам придется попробовать несколько раз.
  4. Либо свиток завершится нормально, либо он передумает в конце и вернет вас обратно к виду, где выбранный элемент находится на экране.

Это происходит как с обычными, так и с виртуальными списками.Я тестировал Win32 и C # на Windows 7 Ultimate.

Я создал небольшое приложение WinForms , которое демонстрирует поведение (требуется .NET Framework 3.5).Если вы не хотите запускать произвольные исполняемые файлы от незнакомцев (я так понимаю), создайте новое приложение WinForms, удалите представление списка в режиме отчета, добавьте столбец и заполните список в событии загрузки формы с 500 возрастающими целыми числами:

private void Form1_Load(object sender, EventArgs e)
{
    for (int i = 0; i < 500; i++)
    {
        this.listView1.Items.Add(i.ToString());
    }
}

Ответы [ 3 ]

1 голос
/ 04 февраля 2010

Я заметил это поведение, и оно, похоже, встроено в элемент управления представлением списка.Я не вижу никакой причины, почему функциональность была бы полезна.Я создал тему на форуме Sysinternals некоторое время назад.Это может быть полезно.

0 голосов
/ 19 февраля 2010

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

http://aviationxchange.net/wikis/winforms/net-color-listbox.aspx (конец документа).

Надеюсь, это поможет.

0 голосов
/ 04 февраля 2010

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

ListView не совсем избит до смерти, но он на жизнеобеспечении. Используйте другой элемент управления.

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