Решил немного дополнить Ваше решение. Немного не корректно, но это первое, что пришло в голову.
[Designer(typeof(MyDesigner))]
public partial class ctrlSlyGrid : System.Windows.Forms.DataGridView
{
public ctrlSlyGrid()
{
InitializeComponent();
}
}
public class MyDesigner : System.Windows.Forms.Design.ControlDesigner
{
private List<System.Windows.Forms.DataGridViewColumn> _listNoneContainer = new List<System.Windows.Forms.DataGridViewColumn>();
public MyDesigner()
: base()
{
}
public override void Initialize(IComponent component)
{
base.Initialize(component);
System.Windows.Forms.DataGridView view = (System.Windows.Forms.DataGridView)base.Component;
foreach (System.Windows.Forms.DataGridViewColumn column in view.Columns)
if (column.Site == null)
_listNoneContainer.Add(column);
foreach (System.Windows.Forms.DataGridViewColumn column in _listNoneContainer)
if (view.Columns.Contains(column))
view.Columns.Remove(column);
}
protected override void Dispose(bool disposing)
{
System.Windows.Forms.DataGridView view = (System.Windows.Forms.DataGridView)this.Component;
foreach (System.Windows.Forms.DataGridViewColumn column in _listNoneContainer)
if (view.Columns.Contains(column))
view.Columns.Add(column);
base.Dispose(disposing);
}
}