Index: trunk/HeuristicLab.Parameters.Views/3.3/ConstrainedValueParameterView.cs
===================================================================
--- trunk/HeuristicLab.Parameters.Views/3.3/ConstrainedValueParameterView.cs	(revision 16565)
+++ trunk/HeuristicLab.Parameters.Views/3.3/ConstrainedValueParameterView.cs	(revision 16872)
@@ -62,4 +62,5 @@
     protected override void DeregisterContentEvents() {
       Content.GetsCollectedChanged -= new EventHandler(Content_GetsCollectedChanged);
+      Content.ReadOnlyChanged -= new EventHandler(Content_ReadOnlyChanged);
       Content.ValidValues.ItemsAdded -= new CollectionItemsChangedEventHandler<T>(ValidValues_ItemsAdded);
       Content.ValidValues.ItemsRemoved -= new CollectionItemsChangedEventHandler<T>(ValidValues_ItemsRemoved);
@@ -76,4 +77,5 @@
       base.RegisterContentEvents();
       Content.GetsCollectedChanged += new EventHandler(Content_GetsCollectedChanged);
+      Content.ReadOnlyChanged += new EventHandler(Content_ReadOnlyChanged);
       Content.ValidValues.ItemsAdded += new CollectionItemsChangedEventHandler<T>(ValidValues_ItemsAdded);
       Content.ValidValues.ItemsRemoved += new CollectionItemsChangedEventHandler<T>(ValidValues_ItemsRemoved);
@@ -100,5 +102,5 @@
       base.SetEnabledStateOfControls();
       valueGroupBox.Enabled = Content != null;
-      valueComboBox.Enabled = (valueComboBox.Items.Count > 0) && !ReadOnly;
+      valueComboBox.Enabled = (valueComboBox.Items.Count > 0) && !Content.ReadOnly && !ReadOnly;
       showInRunCheckBox.Enabled = Content != null && !ReadOnly;
     }
@@ -153,4 +155,11 @@
         FillValueComboBox();
     }
+    protected virtual void Content_ReadOnlyChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_ReadOnlyChanged), sender, e);
+      else {
+        SetEnabledStateOfControls();
+      }
+    }
     protected virtual void Content_GetsCollectedChanged(object sender, EventArgs e) {
       if (InvokeRequired)
Index: trunk/HeuristicLab.Parameters.Views/3.3/ValueLookupParameterView.cs
===================================================================
--- trunk/HeuristicLab.Parameters.Views/3.3/ValueLookupParameterView.cs	(revision 16565)
+++ trunk/HeuristicLab.Parameters.Views/3.3/ValueLookupParameterView.cs	(revision 16872)
@@ -74,4 +74,5 @@
       Content.ActualNameChanged -= new EventHandler(Content_ActualNameChanged);
       Content.GetsCollectedChanged -= new EventHandler(Content_GetsCollectedChanged);
+      Content.ReadOnlyChanged -= new EventHandler(Content_ReadOnlyChanged);
       Content.ValueChanged -= new EventHandler(Content_ValueChanged);
       base.DeregisterContentEvents();
@@ -86,4 +87,5 @@
       Content.ActualNameChanged += new EventHandler(Content_ActualNameChanged);
       Content.GetsCollectedChanged += new EventHandler(Content_GetsCollectedChanged);
+      Content.ReadOnlyChanged += new EventHandler(Content_ReadOnlyChanged);
       Content.ValueChanged += new EventHandler(Content_ValueChanged);
     }
@@ -108,6 +110,6 @@
       actualNameTextBox.Enabled = Content != null;
       actualNameTextBox.ReadOnly = ReadOnly;
-      setValueButton.Enabled = Content != null && !ReadOnly;
-      clearValueButton.Enabled = Content != null && Content.Value != null && !ReadOnly;
+      setValueButton.Enabled = Content != null && !Content.ReadOnly && !ReadOnly;
+      clearValueButton.Enabled = Content != null && !Content.ReadOnly && Content.Value != null && !ReadOnly;
       showInRunCheckBox.Enabled = Content != null && !ReadOnly;
     }
@@ -124,7 +126,14 @@
       else {
         SetDataTypeTextBoxText();
-        clearValueButton.Enabled = Content != null && Content.Value != null && !ReadOnly;
+        clearValueButton.Enabled = Content != null && !Content.ReadOnly && Content.Value != null && !ReadOnly;
         valueViewHost.ViewType = null;
         valueViewHost.Content = Content != null ? Content.Value : null;
+      }
+    }
+    protected virtual void Content_ReadOnlyChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_ReadOnlyChanged), sender, e);
+      else {
+        SetEnabledStateOfControls();
       }
     }
Index: trunk/HeuristicLab.Parameters.Views/3.3/ValueParameterView.cs
===================================================================
--- trunk/HeuristicLab.Parameters.Views/3.3/ValueParameterView.cs	(revision 16565)
+++ trunk/HeuristicLab.Parameters.Views/3.3/ValueParameterView.cs	(revision 16872)
@@ -74,4 +74,5 @@
     protected override void DeregisterContentEvents() {
       Content.GetsCollectedChanged -= new EventHandler(Content_GetsCollectedChanged);
+      Content.ReadOnlyChanged -= new EventHandler(Content_ReadOnlyChanged);
       Content.ValueChanged -= new EventHandler(Content_ValueChanged);
       base.DeregisterContentEvents();
@@ -85,4 +86,5 @@
       base.RegisterContentEvents();
       Content.GetsCollectedChanged += new EventHandler(Content_GetsCollectedChanged);
+      Content.ReadOnlyChanged += new EventHandler(Content_ReadOnlyChanged);
       Content.ValueChanged += new EventHandler(Content_ValueChanged);
     }
@@ -103,6 +105,6 @@
     protected override void SetEnabledStateOfControls() {
       base.SetEnabledStateOfControls();
-      setValueButton.Enabled = Content != null && !(Content is IFixedValueParameter) && !ReadOnly;
-      clearValueButton.Enabled = Content != null && Content.Value != null && !(Content is IFixedValueParameter) && !(Content is ValueParameter<T>) && !ReadOnly;
+      setValueButton.Enabled = Content != null && !Content.ReadOnly && !(Content is IFixedValueParameter) && !ReadOnly;
+      clearValueButton.Enabled = Content != null && !Content.ReadOnly && Content.Value != null && !(Content is IFixedValueParameter) && !(Content is ValueParameter<T>) && !ReadOnly;
       showInRunCheckBox.Enabled = Content != null && !ReadOnly;
     }
@@ -113,8 +115,16 @@
       else {
         SetDataTypeTextBoxText();
-        setValueButton.Enabled = Content != null && !(Content is IFixedValueParameter) && !ReadOnly;
-        clearValueButton.Enabled = Content != null && Content.Value != null && !(Content is IFixedValueParameter<T>) && !(Content is ValueParameter<T>) && !ReadOnly;
+        setValueButton.Enabled = Content != null && !Content.ReadOnly && !(Content is IFixedValueParameter) && !ReadOnly;
+        clearValueButton.Enabled = Content != null && !Content.ReadOnly && Content.Value != null && !(Content is IFixedValueParameter<T>) && !(Content is ValueParameter<T>) && !ReadOnly;
         valueViewHost.ViewType = null;
         valueViewHost.Content = Content != null ? Content.Value : null;
+      }
+    }
+
+    protected virtual void Content_ReadOnlyChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_ReadOnlyChanged), sender, e);
+      else {
+        SetEnabledStateOfControls();
       }
     }
@@ -135,6 +145,5 @@
         try {
           Content.Value = (T)typeSelectorDialog.TypeSelector.CreateInstanceOfSelectedType();
-        }
-        catch (Exception ex) {
+        } catch (Exception ex) {
           ErrorHandling.ShowErrorDialog(this, ex);
         }
