diff -NrU5 mono-2.0.1.orig/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TableLayoutPanel.cs mono-2.0.1/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TableLayoutPanel.cs --- mono-2.0.1.orig/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TableLayoutPanel.cs 2008-12-19 07:00:41.000000000 +0100 +++ mono-2.0.1/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TableLayoutPanel.cs 2008-12-19 07:00:55.000000000 +0100 @@ -131,10 +131,11 @@ set { if (value.isSerialized) { // Serialized version doesn't calculate these. value.ColumnCount = value.ColumnStyles.Count; value.RowCount = value.RowStyles.Count; + value.panel = this; this.settings = value; value.isSerialized = false; } else throw new NotSupportedException ("LayoutSettings value cannot be set directly."); diff -NrU5 mono-2.0.1.orig/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TableLayoutSettings.cs mono-2.0.1/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TableLayoutSettings.cs --- mono-2.0.1.orig/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TableLayoutSettings.cs 2008-12-19 07:00:41.000000000 +0100 +++ mono-2.0.1/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TableLayoutSettings.cs 2008-12-19 07:00:55.000000000 +0100 @@ -46,11 +46,11 @@ private int row_count; private Dictionary columns; private Dictionary column_spans; private Dictionary rows; private Dictionary row_spans; - private TableLayoutPanel panel; + internal TableLayoutPanel panel; internal bool isSerialized; #region Internal Constructor internal TableLayoutSettings (TableLayoutPanel panel) { @@ -132,11 +132,13 @@ if (value < 0) throw new ArgumentOutOfRangeException (); if (row_count != value) { row_count = value; - panel.PerformLayout (panel, "RowCount"); + + if (panel != null) + panel.PerformLayout (); } } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Content)] @@ -223,55 +225,65 @@ if (control == null) throw new ArgumentNullException (); columns[control] = cellPosition.Column; rows[control] = cellPosition.Row; - panel.PerformLayout (); + + if (panel != null) + panel.PerformLayout (); } public void SetColumn (Object control, int column) { if (control == null) throw new ArgumentNullException (); if (column < -1) throw new ArgumentException (); columns[control] = column; - panel.PerformLayout (); + + if (panel != null) + panel.PerformLayout (); } public void SetColumnSpan (Object control, int value) { if (control == null) throw new ArgumentNullException (); if (value < -1) throw new ArgumentException (); column_spans[control] = value; - panel.PerformLayout (); + + if (panel != null) + panel.PerformLayout (); } public void SetRow (Object control, int row) { if (control == null) throw new ArgumentNullException (); if (row < -1) throw new ArgumentException (); rows[control] = row; - panel.PerformLayout (); + + if (panel != null) + panel.PerformLayout (); } public void SetRowSpan (Object control, int value) { if (control == null) throw new ArgumentNullException (); if (value < -1) throw new ArgumentException (); row_spans[control] = value; - panel.PerformLayout (); + + if (panel != null) + panel.PerformLayout (); } #endregion #region Internal Methods internal List GetControls () diff -NrU5 mono-2.0.1.orig/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TableLayoutStyleCollection.cs mono-2.0.1/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TableLayoutStyleCollection.cs --- mono-2.0.1.orig/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TableLayoutStyleCollection.cs 2008-12-19 07:00:41.000000000 +0100 +++ mono-2.0.1/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TableLayoutStyleCollection.cs 2008-12-19 07:00:55.000000000 +0100 @@ -76,11 +76,14 @@ if (layoutStyle.Owner != null) throw new ArgumentException ("Style is already owned"); layoutStyle.Owner = table; int result = al.Add (layoutStyle); - table.PerformLayout (); + + if (table != null) + table.PerformLayout (); + return result; } bool IList.Contains (object style) { diff -NrU5 mono-2.0.1.orig/mcs/class/Managed.Windows.Forms/System.Windows.Forms.Layout/TableLayoutSettingsTypeConverter.cs mono-2.0.1/mcs/class/Managed.Windows.Forms/System.Windows.Forms.Layout/TableLayoutSettingsTypeConverter.cs --- mono-2.0.1.orig/mcs/class/Managed.Windows.Forms/System.Windows.Forms.Layout/TableLayoutSettingsTypeConverter.cs 2008-12-19 07:00:41.000000000 +0100 +++ mono-2.0.1/mcs/class/Managed.Windows.Forms/System.Windows.Forms.Layout/TableLayoutSettingsTypeConverter.cs 2008-12-19 07:02:23.000000000 +0100 @@ -117,11 +117,11 @@ if (!(value is string)) return base.ConvertFrom(context, culture, value); XmlDocument xmldoc = new XmlDocument(); xmldoc.LoadXml (value as string); - TableLayoutSettings settings = new TableLayoutSettings(new TableLayoutPanel ()); + TableLayoutSettings settings = new TableLayoutSettings(null); int count = ParseControl (xmldoc, settings); ParseColumnStyle (xmldoc, settings); ParseRowStyle (xmldoc, settings); settings.RowCount = count;