Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/DataPreprocessingChangedEvent.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/DataPreprocessingChangedEvent.cs	(revision 10550)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/DataPreprocessingChangedEvent.cs	(revision 10551)
@@ -1,6 +1,24 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
 
 namespace HeuristicLab.DataPreprocessing {
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/StatisticsContent.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/StatisticsContent.cs	(revision 10550)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/StatisticsContent.cs	(revision 10551)
@@ -48,4 +48,10 @@
       return new StatisticsContent(this, cloner);
     }
+
+    public event DataPreprocessingChangedEventHandler Changed {
+      add { statisticsLogic.Changed += value; }
+      remove { statisticsLogic.Changed -= value; }
+    }
+
   }
 }
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/StatisticsLogic.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/StatisticsLogic.cs	(revision 10550)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/StatisticsLogic.cs	(revision 10551)
@@ -185,4 +185,9 @@
       return dateTime.Add(new TimeSpan(0, 0, (int)seconds));
     }
+
+    public event DataPreprocessingChangedEventHandler Changed {
+      add { preprocessingData.Changed += value; }
+      remove { preprocessingData.Changed -= value; }
+    }
   }
 }
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IStatisticsLogic.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IStatisticsLogic.cs	(revision 10550)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IStatisticsLogic.cs	(revision 10551)
@@ -49,4 +49,6 @@
     string GetColumnTypeAsString(int columnIndex);
     string GetVariableName(int columnIndex);
+
+    event DataPreprocessingChangedEventHandler Changed;
   }
 }
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/StatisticsView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/StatisticsView.cs	(revision 10550)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/StatisticsView.cs	(revision 10551)
@@ -58,4 +58,20 @@
       }
     }
+
+    /// <summary>
+    /// Adds eventhandlers to the current instance.
+    /// </summary>
+    protected override void RegisterContentEvents() {
+      Content.Changed += Content_Changed;
+    }
+
+
+    /// <summary>
+    /// Removes the eventhandlers from the current instance.
+    /// </summary>
+    protected override void DeregisterContentEvents() {
+      Content.Changed -= Content_Changed;
+    }
+
     private void UpdateData() {
       var logic = Content.StatisticsLogic;
@@ -86,18 +102,5 @@
 
       for (int i = 0; i < logic.GetColumnCount(); ++i) {
-        List<string> list;
-        if (logic.IsType<double>(i)) {
-          list = GetDoubleColumns(i);
-        } else if (logic.IsType<string>(i)) {
-          list = GetStringColumns(i);
-        } else if (logic.IsType<DateTime>(i)) {
-          list = GetDateTimeColumns(i);
-        } else {
-          list = new List<string>();
-          for (int j = 0; j < COLUMNS; ++j) {
-            list.Add("unknown column type");
-          }
-        }
-        columnsRowsMatrix.Add(list);
+        columnsRowsMatrix.Add(GetList(i));
       }
 
@@ -110,4 +113,22 @@
       }
       dataGridView.AllowUserToResizeColumns = true;
+    }
+
+    private List<string> GetList(int i) {
+      List<string> list;
+      var logic = Content.StatisticsLogic;
+      if (logic.IsType<double>(i)) {
+        list = GetDoubleColumns(i);
+      } else if (logic.IsType<string>(i)) {
+        list = GetStringColumns(i);
+      } else if (logic.IsType<DateTime>(i)) {
+        list = GetDateTimeColumns(i);
+      } else {
+        list = new List<string>();
+        for (int j = 0; j < COLUMNS; ++j) {
+          list.Add("unknown column type");
+        }
+      }
+      return list;
     }
 
@@ -169,4 +190,26 @@
       }
     }
+
+    private void Content_Changed(object sender, DataPreprocessingChangedEventArgs e) {
+      switch (e.Type) {
+        case DataPreprocessingChangedEventType.DeleteColumn:
+          columnsRowsMatrix.RemoveAt(e.Column);
+          break;
+        case DataPreprocessingChangedEventType.AddColumn:
+          columnsRowsMatrix.Insert(e.Row, GetList(e.Column));
+          dataGridView.RowCount++;
+          break;
+        case DataPreprocessingChangedEventType.ChangeItem:
+          columnsRowsMatrix[e.Column] = GetList(e.Column);
+          break;
+        case DataPreprocessingChangedEventType.DeleteRow:
+        case DataPreprocessingChangedEventType.AddRow:
+          for (int i = 0; i < columnsRowsMatrix.Count; ++i) {
+            columnsRowsMatrix[i] = GetList(e.Column);
+          }
+          break;
+      }
+      dataGridView.Refresh();
+    }
   }
 }
