Будет ли что-то подобное для вас работать?... если установлен флажок, добавлять элементы в словарь ... если флажок снят, удалить из словаря.Не проверенный код, но интересно, можно ли сделать что-то вроде этого:
Dictionary<String, ListViewItem> Dic = listView.Items
.Cast<ListViewItem>()
.ToDictionary(x => x.Text, x => x.SubItems[0].Checked);
Вы спросили, как лучше это сделать.То, что я говорю, есть на вашем событии проверки, вы захотите добавить элементы в ваш список.Я сомневаюсь, что пользователь на самом деле проверит все 3000, поэтому измените ваш код, чтобы решить, как вы хотите обработать проверенные элементы, в приведенном мной примере используется лямбда-выражение.Если вы не знакомы, измените ваш вопрос, чтобы отразить, что вам действительно нужно и / или нужно ...