Index: /stable/HeuristicLab.Data.Views/3.3/EnumValueView.Designer.cs
===================================================================
--- /stable/HeuristicLab.Data.Views/3.3/EnumValueView.Designer.cs	(revision 15116)
+++ /stable/HeuristicLab.Data.Views/3.3/EnumValueView.Designer.cs	(revision 15117)
@@ -47,4 +47,6 @@
       this.valueLabel = new System.Windows.Forms.Label();
       this.valueComboBox = new System.Windows.Forms.ComboBox();
+      this.flagsListView = new System.Windows.Forms.ListView();
+      this.columnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
       this.SuspendLayout();
       // 
@@ -54,5 +56,5 @@
       this.valueLabel.Location = new System.Drawing.Point(3, 3);
       this.valueLabel.Name = "valueLabel";
-      this.valueLabel.Size = new System.Drawing.Size(56, 13);
+      this.valueLabel.Size = new System.Drawing.Size(37, 13);
       this.valueLabel.TabIndex = 0;
       this.valueLabel.Text = "&Value:";
@@ -60,5 +62,5 @@
       // valueComboBox
       // 
-      this.valueComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+      this.valueComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
       this.valueComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
@@ -71,8 +73,29 @@
       this.valueComboBox.SelectedIndexChanged += new System.EventHandler(this.valueComboBox_SelectedIndexChanged);
       // 
+      // flagsListView
+      // 
+      this.flagsListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.flagsListView.CheckBoxes = true;
+      this.flagsListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
+            this.columnHeader});
+      this.flagsListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
+      this.flagsListView.Location = new System.Drawing.Point(65, 0);
+      this.flagsListView.Name = "flagsListView";
+      this.flagsListView.Size = new System.Drawing.Size(212, 21);
+      this.flagsListView.TabIndex = 2;
+      this.flagsListView.UseCompatibleStateImageBehavior = false;
+      this.flagsListView.View = System.Windows.Forms.View.Details;
+      this.flagsListView.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.flagsListView_ItemChecked);
+      // 
+      // columnHeader
+      // 
+      this.columnHeader.Width = 100;
+      // 
       // EnumValueView
       // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
+      this.Controls.Add(this.flagsListView);
       this.Controls.Add(this.valueComboBox);
       this.Controls.Add(this.valueLabel);
@@ -81,4 +104,5 @@
       this.ResumeLayout(false);
       this.PerformLayout();
+
     }
 
@@ -87,4 +111,6 @@
     private System.Windows.Forms.Label valueLabel;
     private System.Windows.Forms.ComboBox valueComboBox;
+    private System.Windows.Forms.ListView flagsListView;
+    private System.Windows.Forms.ColumnHeader columnHeader;
   }
 }
Index: /stable/HeuristicLab.Data.Views/3.3/EnumValueView.cs
===================================================================
--- /stable/HeuristicLab.Data.Views/3.3/EnumValueView.cs	(revision 15116)
+++ /stable/HeuristicLab.Data.Views/3.3/EnumValueView.cs	(revision 15117)
@@ -21,4 +21,5 @@
 
 using System;
+using System.Windows.Forms;
 using HeuristicLab.Core.Views;
 using HeuristicLab.MainForm;
@@ -42,8 +43,22 @@
     }
 
+    static EnumValueView() {
+      if (!typeof(T).IsEnum)
+        throw new InvalidOperationException("Generic type " + typeof(T).Name + " is not an enum.");
+    }
+
     public EnumValueView() {
       InitializeComponent();
+      this.Caption = typeof(T).Name + " View";
+
       valueComboBox.DataSource = Enum.GetValues(typeof(T));
-      this.Name = typeof(T).Name + "EnumView";
+      foreach (T flag in Enum.GetValues(typeof(T)))
+        flagsListView.Items.Add(new ListViewItem(flag.ToString()) { Tag = flag });
+      columnHeader.Width = -1;
+
+      bool isFlags = Attribute.IsDefined(typeof(T), typeof(FlagsAttribute));
+      if (isFlags) valueLabel.Text = "Flags:";
+      valueComboBox.Visible = !isFlags;
+      flagsListView.Visible = isFlags;
     }
     public EnumValueView(EnumValue<T> content)
@@ -64,14 +79,26 @@
     protected override void OnContentChanged() {
       base.OnContentChanged();
-      if (Content == null)
-        valueComboBox.Enabled = false;
-      else
+      if (Content == null) {
+        valueComboBox.SelectedIndex = -1;
+        foreach (ListViewItem item in flagsListView.Items)
+          item.Checked = false;
+      } else {
         valueComboBox.SelectedItem = Content.Value;
+        foreach (ListViewItem item in flagsListView.Items) {
+          var flag = (Enum)item.Tag;
+          item.Checked = ((Enum)(object)Content.Value).HasFlag(flag);
+        }
+      }
     }
 
     protected override void SetEnabledStateOfControls() {
       base.SetEnabledStateOfControls();
-      if (Content == null) valueComboBox.Enabled = false;
-      else valueComboBox.Enabled = !ReadOnly;
+      if (Content == null) {
+        valueComboBox.Enabled = false;
+        flagsListView.Enabled = false;
+      } else {
+        valueComboBox.Enabled = !ReadOnly;
+        flagsListView.Enabled = !ReadOnly;
+      }
     }
 
@@ -79,6 +106,11 @@
       if (InvokeRequired)
         Invoke(new EventHandler(Content_ValueChanged), sender, e);
-      else
+      else {
         valueComboBox.SelectedItem = Content.Value;
+        foreach (ListViewItem item in flagsListView.Items) {
+          var flag = (Enum)item.Tag;
+          item.Checked = ((Enum)(object)Content.Value).HasFlag(flag);
+        }
+      }
     }
 
@@ -87,4 +119,24 @@
         Content.Value = (T)valueComboBox.SelectedItem;
     }
+
+    private void flagsListView_ItemChecked(object sender, ItemCheckedEventArgs e) {
+      var flag = (T)e.Item.Tag;
+      if ((Content != null) && !Content.ReadOnly)
+        Content.Value = ((Enum)(object)Content.Value).SetFlag(flag, e.Item.Checked);
+    }
+  }
+
+  internal static class EnumHelper {
+    //https://stackoverflow.com/a/21581418
+    public static T SetFlag<T>(this Enum value, T flag, bool set) {
+      var baseType = Enum.GetUnderlyingType(value.GetType());
+      dynamic valueAsBase = Convert.ChangeType(value, baseType);
+      dynamic flagAsBase = Convert.ChangeType(flag, baseType);
+      if (set)
+        valueAsBase |= flagAsBase;
+      else
+        valueAsBase &= ~flagAsBase;
+      return (T)valueAsBase;
+    }
   }
 }
Index: /stable/HeuristicLab.Data.Views/3.3/HeuristicLab.Data.Views-3.3.csproj
===================================================================
--- /stable/HeuristicLab.Data.Views/3.3/HeuristicLab.Data.Views-3.3.csproj	(revision 15116)
+++ /stable/HeuristicLab.Data.Views/3.3/HeuristicLab.Data.Views-3.3.csproj	(revision 15117)
@@ -105,4 +105,5 @@
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="Microsoft.CSharp" />
     <Reference Include="System" />
     <Reference Include="System.Core">
Index: /stable/HeuristicLab.Data/3.3/EnumValue.cs
===================================================================
--- /stable/HeuristicLab.Data/3.3/EnumValue.cs	(revision 15116)
+++ /stable/HeuristicLab.Data/3.3/EnumValue.cs	(revision 15117)
@@ -52,6 +52,4 @@
     private EnumValue(EnumValue<T> original, Cloner cloner)
       : base(original, cloner) {
-      this.value = original.value;
-      this.readOnly = original.readOnly;
     }
 
