Как добавить всего 10 предметов - PullRequest
0 голосов
/ 09 июля 2011

У меня есть undoredomanager.И мне нужно просмотреть в списке только 10 записей.уже кипит мозг, как это сделать.

Этот код добавлен в список просмотра всех записей, но мне нужны только последние 10.

lvUndoStack.Items.Clear();
var list = new List<object>();
foreach (var command in UndoRedoManager.UndoCommands)
{
    list.Insert(0, command.ToString());
}
lvUndoStack.Items.AddRange(list.ToArray());
lvUndoStack.SelectedIndex = lvUndoStack.Items.Count - 1;
indexSeletedItemUndoStack = lvUndoStack.SelectedIndex;

list = new List<object>();
foreach (var command in UndoRedoManager.RedoCommands)
{
    list.Insert(0, command.ToString());
}
lvUndoStack.Items.AddRange(list.ToArray());

главное - нетб / у linq

Обновление:

пример:

undo1
undo2
undo3
undo4
undo5
undo6
undo7
redo1
redo2
redo3
redo4
redo5

Мне нужно 10 очков. Если запустить Undo4, вам нужно показать все в последнемили максимум 10

1 Ответ

0 голосов
/ 10 июля 2011

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

if (list.Count <= 10)
{
    lvUndoStack.Items.AddRange(list.ToArray());
}
else
{
    for (int i = 0; i < 10; i++)
    {
        lvUndoStack.Items.Add(list[0]);
    }
}

И сделать то же самое для команд повтора. Это не лучшее решение, IMO - действительно больше препятствий, но оно должно заставить вас двигаться в правильном направлении.

Еще лучшим решением было бы изменение / расширение класса UndoRedoManager, чтобы ListView мог вызывать метод для получения списка последних n команд отмены / повторения. Что-то вроде:

public List<Object> GetUndoCommands(int numberOfCommands);

Тогда ListView может просто вызвать этот метод:

lvUndoStack.Items.AddRange(UndoRedoManager.GetUndoCommands(10).ToArray());

И что-то похожее для команд повтора. Он удаляет кучу кода с вашего уровня пользовательского интерфейса и дает вам возможность легко переключать максимальное количество элементов на более поздний срок, и в целом (опять же IMO), кажется, лучший путь.

...