Index: trunk/sources/HeuristicLab.Data.Views/3.3/ColumnsVisibilityDialog.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/ColumnsVisibilityDialog.Designer.cs	(revision 3316)
+++ trunk/sources/HeuristicLab.Data.Views/3.3/ColumnsVisibilityDialog.Designer.cs	(revision 3316)
@@ -0,0 +1,61 @@
+﻿namespace HeuristicLab.Data.Views {
+  partial class ColumnsVisibilityDialog {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.checkedListBox = new System.Windows.Forms.CheckedListBox();
+      this.SuspendLayout();
+      // 
+      // checkedListBox
+      // 
+      this.checkedListBox.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.checkedListBox.CheckOnClick = true;
+      this.checkedListBox.FormattingEnabled = true;
+      this.checkedListBox.Location = new System.Drawing.Point(12, 12);
+      this.checkedListBox.Name = "checkedListBox";
+      this.checkedListBox.Size = new System.Drawing.Size(171, 244);
+      this.checkedListBox.TabIndex = 0;
+      this.checkedListBox.ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(this.checkedListBox_ItemCheck);
+      // 
+      // ColumnsVisibilityDialog
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.ClientSize = new System.Drawing.Size(194, 273);
+      this.Controls.Add(this.checkedListBox);
+      this.MaximizeBox = false;
+      this.MinimizeBox = false;
+      this.Name = "ColumnsVisibilityDialog";
+      this.ShowInTaskbar = false;
+      this.Text = "Show / Hide Columns";
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.CheckedListBox checkedListBox;
+  }
+}
Index: trunk/sources/HeuristicLab.Data.Views/3.3/ColumnsVisibilityDialog.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/ColumnsVisibilityDialog.cs	(revision 3316)
+++ trunk/sources/HeuristicLab.Data.Views/3.3/ColumnsVisibilityDialog.cs	(revision 3316)
@@ -0,0 +1,39 @@
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace HeuristicLab.Data.Views {
+  public partial class ColumnsVisibilityDialog : Form {
+    public ColumnsVisibilityDialog() {
+      InitializeComponent();
+    }
+
+    public ColumnsVisibilityDialog(IEnumerable<DataGridViewColumn> columns) :this() {
+      this.Columns = columns;
+    }
+
+    private List<DataGridViewColumn> columns;
+    public IEnumerable<DataGridViewColumn> Columns {
+      get { return this.columns; }
+      set {
+        this.columns = new List<DataGridViewColumn>(value);
+        UpdateCheckBoxes();
+      }
+    }
+
+    private void UpdateCheckBoxes() {
+      this.checkedListBox.Items.Clear();
+      foreach (DataGridViewColumn column in columns)
+        checkedListBox.Items.Add(column.HeaderText, column.Visible);
+    }
+
+    private void checkedListBox_ItemCheck(object sender, ItemCheckEventArgs e) {
+      this.columns[e.Index].Visible = e.NewValue == CheckState.Checked;
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.Data.Views/3.3/HeuristicLab.Data.Views-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/HeuristicLab.Data.Views-3.3.csproj	(revision 3315)
+++ trunk/sources/HeuristicLab.Data.Views/3.3/HeuristicLab.Data.Views-3.3.csproj	(revision 3316)
@@ -92,4 +92,10 @@
       <DependentUpon>BoolValueView.cs</DependentUpon>
     </Compile>
+    <Compile Include="ColumnsVisibilityDialog.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="ColumnsVisibilityDialog.Designer.cs">
+      <DependentUpon>ColumnsVisibilityDialog.cs</DependentUpon>
+    </Compile>
     <Compile Include="ComparisonView.cs">
       <SubType>UserControl</SubType>
Index: trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixView.Designer.cs	(revision 3315)
+++ trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixView.Designer.cs	(revision 3316)
@@ -52,6 +52,9 @@
       this.columnsTextBox = new System.Windows.Forms.TextBox();
       this.columnsLabel = new System.Windows.Forms.Label();
+      this.contextMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
+      this.ShowHideColumns = new System.Windows.Forms.ToolStripMenuItem();
       ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      this.contextMenu.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -127,4 +130,18 @@
       this.columnsLabel.Text = "&Columns:";
       // 
+      // contextMenu
+      // 
+      this.contextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.ShowHideColumns});
+      this.contextMenu.Name = "contextMenu";
+      this.contextMenu.Size = new System.Drawing.Size(191, 26);
+      // 
+      // ShowHideColumns
+      // 
+      this.ShowHideColumns.Name = "ShowHideColumns";
+      this.ShowHideColumns.Size = new System.Drawing.Size(190, 22);
+      this.ShowHideColumns.Text = "Show / Hide Columns";
+      this.ShowHideColumns.Click += new System.EventHandler(this.ShowHideColumns_Click);
+      // 
       // StringConvertibleMatrixView
       // 
@@ -140,4 +157,5 @@
       ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      this.contextMenu.ResumeLayout(false);
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -153,4 +171,6 @@
     private System.Windows.Forms.TextBox columnsTextBox;
     private System.Windows.Forms.Label columnsLabel;
+    private System.Windows.Forms.ContextMenuStrip contextMenu;
+    private System.Windows.Forms.ToolStripMenuItem ShowHideColumns;
 
   }
Index: trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixView.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixView.cs	(revision 3315)
+++ trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixView.cs	(revision 3316)
@@ -240,5 +240,9 @@
             sortedColumnIndizes.Add(new KeyValuePair<int, SortOrder>(e.ColumnIndex, newSortOrder));
         Sort();
-      }
+      } else if (e.Button == MouseButtons.Right) {
+        if (Content.ColumnNames.Count() != 0)
+          contextMenu.Show(MousePosition);
+      }
+
       //}
     }
@@ -293,4 +297,8 @@
       }
     }
+
+    private void ShowHideColumns_Click(object sender, EventArgs e) {
+      new ColumnsVisibilityDialog(this.dataGridView.Columns.Cast<DataGridViewColumn>()).ShowDialog();
+    }
   }
 }
