Вариант 1: словарь по-прежнему является коллекцией. Перебор по меню. Значения.
Вы можете перебирать меню. Значения и удалять их при переборе. Значения не появятся в каком-либо отсортированном порядке (что должно быть хорошо для вашего случая). Возможно, вам придется использовать цикл for и настроить индекс, а не использовать foreach - перечислитель выдаст исключение, если вы измените коллекцию во время итерации.
(я попытаюсь добавить код, когда я нахожусь на моей машине разработчика Mon)
Вариант 2. Создание пользовательского итератора.
Некоторые коллекции, возвращаемые из ListBox SelectedItems в Winforms, на самом деле не содержат коллекцию, они предоставляют обертку вокруг базовой коллекции. Вроде как CollectionViewSource в WPF. ReadOnlyCollection тоже делает нечто подобное.
Создайте класс, который может "сгладить" ваши вложенные словари во что-то, что может перечислять их, как если бы они были одной коллекцией. Реализуйте функцию удаления, которая выглядит так, как будто она удаляет элемент из коллекции, но действительно удаляет из текущего словаря.