void menuItem_Click(object sender, EventArgs e) { ToolStripMenuItem menuItem = (ToolStripMenuItem)sender; menuItem.Checked = !menuItem.Checked; foreach (GridColumn column in ((ColumnView)MainView).Columns) { if (column.GetCaption() == menuItem.Text) { column.Visible = menuItem.Checked; if (column.Visible) { column.VisibleIndex = menuItem.Owner.Items.IndexOfKey(menuItem.Name); } this.Refresh(); return; } } PropertyInfo objPropertyInfo = (PropertyInfo)menuItem.Tag; GridColumn col = ((ColumnView)MainView).Columns.AddField(objPropertyInfo.Name); object[] attValues = objPropertyInfo.GetCustomAttributes(typeof(CaptionColumn), false); if (attValues.Length > 0 && attValues[0] is CaptionColumn) { col.Caption = (attValues[0] as CaptionColumn).Caption; } else { col.Caption = col.GetCaption(); } attValues = objPropertyInfo.GetCustomAttributes(typeof(XtraGridEditor), false); if (attValues.Length > 0 && attValues[0] is XtraGridEditor) { if ((attValues[0] as XtraGridEditor).RepositoryItem == typeof(RepositoryItemCheckEdit)) { CheckBoxEditor.Name = (attValues[0] as XtraGridEditor).Name; col.ColumnEdit = CheckBoxEditor; } else if ((attValues[0] as XtraGridEditor).RepositoryItem == typeof(RepositoryItemLookUpEdit)) { LookUpEditor.Name = (attValues[0] as XtraGridEditor).Name; col.ColumnEdit = LookUpEditor; } } col.Width = col.GetBestWidth(); col.Visible = true; col.VisibleIndex = ContextMenuStrip.Items.IndexOf(menuItem); menuItem.Text = col.GetCaption(); }