protected CustomDataGridViewColumnDescriptorBuilder <TModelBasetype> deleteButtonColumnCreator <TModelBasetype>(CustomDataGridView <TModelBasetype> table, ItemListFormBaseManager <TModelBasetype> .ColumnDescriptorBuilderGetterDelegate builderGetterMethod) where TModelBasetype : class, IModel, INotifyPropertyChanged { CustomDataGridViewColumnDescriptorBuilder <TModelBasetype> builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.Button); builder.Header("Delete"); builder.Width(70); builder.DividerWidth(DEFAULT_DIVIDER_WIDTH); builder.ButtonText("Delete"); builder.CellContentClickHandlerMethod((item, cell, e) => { string msgBoxText = string.Format("Do you really want to delete this {0}?\n{1}", SubjectSingular, item); var confirm = MessageBox.Show(msgBoxText, "Delete confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (confirm == DialogResult.Yes) { ((IModelListFormBaseManager)Manager).DeleteItem(item); } }); return(builder); }