WinForms ListView, помня прокрученное местоположение на перезагрузке

Убедитесь, что метод reject фактически сохраняет изменения, внесенные вами в объект Python, в базу данных как для столбца, так и для связанных ячеек, т. Е. column.save() и cell.save(). Затем, когда вы вызываете reject в столбце self.co3.reject(), вам потребуется обновить объект Python ячейки, снова считав его из базы данных.

    self.cl3.refresh_from_db()
    self.assertEqual(
        self.cl3.is_rejected,
        True
    )

Ваши распечатанные тесты в функции отклонения работают, потому что вы вызываете reject для объектов, а затем печатаете поля из этих же объектов.

12
задан John Saunders 25 March 2010 в 19:39
поделиться

5 ответов

У меня была та же проблема с только что, и я закончил тем, что реализовал алгоритм для сравнения модели со списком, таким образом, я только добавил/удалил элементы, которые изменились. Таким образом, если не было никаких значительных изменений список, не переходил к началу. И главным, которого я хотел достигнуть, была эффективность (так, чтобы список не мигал).

4
ответ дан 2 December 2019 в 04:53
поделиться

Посмотрите на ListView. Свойство TopItem. Это имеет индекс, который должен содержать его положение в списке. Найдите, что индекс в новом списке, и установил TopItem на тот объект, и он должен сделать прокрутку автоматически.

1
ответ дан 2 December 2019 в 04:53
поделиться

К сожалению, необходимо будет использовать некоторый interop для прокрутки к точной позиции в ListView. Используйте функцию GetScrollInfo winapi, чтобы заставить существующее положение прокрутки и SendMessage прокручивать к позиции.

Там в статье о CodeProject под названием Прокрутка группе с ListView, который мог бы вести Вас к решению.

0
ответ дан 2 December 2019 в 04:53
поделиться

Я просто хотел предоставить некоторую информацию для тех, кто отчаянно пытается использовать Buggy ListView.topitem свойство:

  1. Вы должны установить свойство Topitem после вызова ListView.endupdate
  2. элемента управления ListView должно иметь свой свой свой свой свой свой свой свой свой свой имуще чем String.empty, или имущество не будет работать.
  3. Установка ListView.topitem бросает прерывистые исключения NULL CASTER. Всегда держите эту линию кода внутри попробовать ... Catch Block.

Конечно, это приведет к тому, что прокрутка прокрутки ListView переходит на 0 и обратно в расположение верхнего элемента, которое раздражает. Пожалуйста, обновите этот вопрос, если вы найдете обходной путь к этой проблеме.

15
ответ дан 2 December 2019 в 04:53
поделиться

У меня была сортировка- той же проблемы. У меня есть listView, который я заполняю каждые 1/2 секунды, и когда я устанавливаю TopItem на ListItem, чей индекс> видимых элементов, то список перескакивает между topItem и двумя задними точками.

Итак, чтобы исправить проблему, я установил TopIterm ПОСЛЕ вызова EndUpdate.

lvB.EndUpdate();
lvI.EndUpdate();
lvR.EndUpdate();

if (lstEntryInts.Items.Count > 0)
    lstEntryInts.TopItem = lstEntryInts.Items[iTopVisIdx];
if (lstEntryBools.Items.Count > 0)
    lstEntryBools.TopItem = lstEntryBools.Items[iTopVisIdx];
if (lstEntryReals.Items.Count > 0)
    lstEntryReals.TopItem = lstEntryReals.Items[iTopVisIdx];​
0
ответ дан 2 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: