Index: trunk/HeuristicLab.Core/3.3/Collections/CheckedItemCollection.cs
===================================================================
--- trunk/HeuristicLab.Core/3.3/Collections/CheckedItemCollection.cs	(revision 16992)
+++ trunk/HeuristicLab.Core/3.3/Collections/CheckedItemCollection.cs	(revision 17009)
@@ -23,7 +23,7 @@
 using System.Collections.Generic;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Collections;
 using HeuristicLab.Common;
-using HEAL.Attic;
 
 namespace HeuristicLab.Core {
@@ -108,4 +108,21 @@
 
     /// <summary>
+    /// Sets the checked state of <paramref name="items"/> to <paramref name="checkedState"/>.
+    /// </summary>
+    /// <param name="items">The items to set the checked state for.</param>
+    /// <param name="checkedState">The new checked state of <paramref name="item"/></param>
+    public void SetItemCheckedState(IEnumerable<T> items, bool checkedState) {
+      var changed = new List<T>();
+      foreach (var item in items) {
+        if (!this.checkedState.TryGetValue(item, out bool currentState)) throw new ArgumentException();
+        if (currentState != checkedState) {
+          this.checkedState[item] = checkedState;
+          changed.Add(item);
+        }
+      }
+      if (changed.Count > 0) OnCheckedItemsChanged(changed);
+    }
+
+    /// <summary>
     /// Adds a new <paramref name="item"/> with the given <paramref name="checkedState"/>.
     /// </summary>
Index: trunk/HeuristicLab.Core/3.3/Collections/CheckedItemList.cs
===================================================================
--- trunk/HeuristicLab.Core/3.3/Collections/CheckedItemList.cs	(revision 16992)
+++ trunk/HeuristicLab.Core/3.3/Collections/CheckedItemList.cs	(revision 17009)
@@ -23,7 +23,7 @@
 using System.Collections.Generic;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Collections;
 using HeuristicLab.Common;
-using HEAL.Attic;
 
 namespace HeuristicLab.Core {
@@ -111,12 +111,31 @@
     /// Sets the checked state of <paramref name="item"/> to <paramref name="checkedState"/>.
     /// </summary>
+    /// <remarks>
+    /// This method is slower than <see cref="SetItemCheckedState(int, bool)"/>.
+    /// </remarks>
     /// <param name="item">The item to set the checked state for.</param>
     /// <param name="checkedState">The new checked state of <paramref name="item"/></param>
     public void SetItemCheckedState(T item, bool checkedState) {
-      if (!this.checkedState.ContainsKey(item)) throw new ArgumentException();
-      if (this.checkedState[item] != checkedState) {
-        this.checkedState[item] = checkedState;
-        OnCheckedItemsChanged(new IndexedItem<T>[] { new IndexedItem<T>(IndexOf(item), item) });
-      }
+      SetItemCheckedState(IndexOf(item), checkedState);
+    }
+
+    /// <summary>
+    /// Sets the checked state of <paramref name="items"/> to <paramref name="checkedState"/>.
+    /// </summary>
+    /// <remarks>
+    /// This method is slower than <see cref="SetItemCheckedState(IEnumerable{int}, bool)"/>.
+    /// </remarks>
+    /// <param name="items">The items to set the checked state for.</param>
+    /// <param name="checkedState">The new checked state of <paramref name="item"/></param>
+    public void SetItemCheckedState(IEnumerable<T> items, bool checkedState) {
+      var changed = new List<IndexedItem<T>>();
+      foreach (var item in items) {
+        if (!this.checkedState.TryGetValue(item, out bool currentState)) throw new ArgumentException();
+        if (currentState != checkedState) {
+          this.checkedState[item] = checkedState;
+          changed.Add(new IndexedItem<T>(IndexOf(item), item));
+        }
+      }
+      if (changed.Count > 0) OnCheckedItemsChanged(changed);
     }
 
@@ -127,5 +146,28 @@
     /// <param name="checkedState">The new checked state of the item.</param>
     public void SetItemCheckedState(int itemIndex, bool checkedState) {
-      SetItemCheckedState(this[itemIndex], checkedState);
+      var item = list[itemIndex];
+      if (!this.checkedState.TryGetValue(item, out bool currentState)) throw new ArgumentException();
+      if (currentState != checkedState) {
+        this.checkedState[item] = checkedState;
+        OnCheckedItemsChanged(new IndexedItem<T>[] { new IndexedItem<T>(itemIndex, item) });
+      }
+    }
+
+    /// <summary>
+    /// Sets the checked state of all <paramref name="itemIndices"/> to <paramref name="checkedState"/>.
+    /// </summary>
+    /// <param name="itemIndices">The indices of all items to set the checked state for.</param>
+    /// <param name="checkedState">The new checked state of the item.</param>
+    public void SetItemCheckedState(IEnumerable<int> itemIndices, bool checkedState) {
+      var changed = new List<IndexedItem<T>>();
+      foreach (var index in itemIndices) {
+        var item = list[index];
+        if (!this.checkedState.TryGetValue(item, out bool currentState)) throw new ArgumentException();
+        if (currentState != checkedState) {
+          this.checkedState[item] = checkedState;
+          changed.Add(new IndexedItem<T>(index, item));
+        }
+      }
+      if (changed.Count > 0) OnCheckedItemsChanged(changed);
     }
 
Index: trunk/HeuristicLab.Core/3.3/Collections/ReadOnlyCheckedItemCollection.cs
===================================================================
--- trunk/HeuristicLab.Core/3.3/Collections/ReadOnlyCheckedItemCollection.cs	(revision 16992)
+++ trunk/HeuristicLab.Core/3.3/Collections/ReadOnlyCheckedItemCollection.cs	(revision 17009)
@@ -22,7 +22,7 @@
 using System;
 using System.Collections.Generic;
+using HEAL.Attic;
 using HeuristicLab.Collections;
 using HeuristicLab.Common;
-using HEAL.Attic;
 
 namespace HeuristicLab.Core {
@@ -75,4 +75,8 @@
     }
 
+    public void SetItemCheckedState(IEnumerable<T> items, bool checkedState) {
+      CheckedItemCollection.SetItemCheckedState(items, checkedState);
+    }
+
     public void Add(T item, bool checkedState) {
       throw new NotSupportedException();
Index: trunk/HeuristicLab.Core/3.3/Collections/ReadOnlyCheckedItemList.cs
===================================================================
--- trunk/HeuristicLab.Core/3.3/Collections/ReadOnlyCheckedItemList.cs	(revision 16992)
+++ trunk/HeuristicLab.Core/3.3/Collections/ReadOnlyCheckedItemList.cs	(revision 17009)
@@ -22,7 +22,7 @@
 using System;
 using System.Collections.Generic;
+using HEAL.Attic;
 using HeuristicLab.Collections;
 using HeuristicLab.Common;
-using HEAL.Attic;
 
 namespace HeuristicLab.Core {
@@ -72,6 +72,22 @@
     }
 
+    public bool ItemChecked(int itemIndex) {
+      return CheckedItemList.ItemChecked(itemIndex);
+    }
+
     public void SetItemCheckedState(T item, bool checkedState) {
       CheckedItemList.SetItemCheckedState(item, checkedState);
+    }
+
+    public void SetItemCheckedState(IEnumerable<T> items, bool checkedState) {
+      CheckedItemList.SetItemCheckedState(items, checkedState);
+    }
+
+    public void SetItemCheckedState(int itemIndex, bool checkedState) {
+      CheckedItemList.SetItemCheckedState(itemIndex, checkedState);
+    }
+
+    public void SetItemCheckedState(IEnumerable<int> itemIndices, bool checkedState) {
+      CheckedItemList.SetItemCheckedState(itemIndices, checkedState);
     }
 
Index: trunk/HeuristicLab.Core/3.3/Interfaces/ICheckedItemCollection.cs
===================================================================
--- trunk/HeuristicLab.Core/3.3/Interfaces/ICheckedItemCollection.cs	(revision 16992)
+++ trunk/HeuristicLab.Core/3.3/Interfaces/ICheckedItemCollection.cs	(revision 17009)
@@ -21,6 +21,6 @@
 
 using System.Collections.Generic;
+using HEAL.Attic;
 using HeuristicLab.Collections;
-using HEAL.Attic;
 
 namespace HeuristicLab.Core {
@@ -31,4 +31,5 @@
     bool ItemChecked(T item);
     void SetItemCheckedState(T item, bool checkedState);
+    void SetItemCheckedState(IEnumerable<T> item, bool checkedState);
     void Add(T item, bool checkedState);
   }
Index: trunk/HeuristicLab.Core/3.3/Interfaces/ICheckedItemList.cs
===================================================================
--- trunk/HeuristicLab.Core/3.3/Interfaces/ICheckedItemList.cs	(revision 16992)
+++ trunk/HeuristicLab.Core/3.3/Interfaces/ICheckedItemList.cs	(revision 17009)
@@ -21,6 +21,6 @@
 
 using System.Collections.Generic;
+using HEAL.Attic;
 using HeuristicLab.Collections;
-using HEAL.Attic;
 
 namespace HeuristicLab.Core {
@@ -30,5 +30,9 @@
     IEnumerable<IndexedItem<T>> CheckedItems { get; }
     bool ItemChecked(T item);
+    bool ItemChecked(int itemIndex);
     void SetItemCheckedState(T item, bool checkedState);
+    void SetItemCheckedState(IEnumerable<T> items, bool checkedState);
+    void SetItemCheckedState(int itemIndex, bool checkedState);
+    void SetItemCheckedState(IEnumerable<int> itemIndices, bool checkedState);
     void Add(T item, bool checkedState);
     void Insert(int index, T item, bool checkedState);
