Continuando con el articulo, ahora veremos la clase DataGridViewTextEditorColumn, esta clase hereda de DataGridViewColumn y le he agregado dos propiedades para nuestro propósito ShowButtonMode y ColumnEditor, esta ultima propiedad es del tipo RepositoryTextEditor.
Los valores para ShowButtonMode son:
Los valores para ShowButtonMode son:
- Always: Indica que los botones de la celda siempre estaran visibles.
- FocusedRow: Indica que los botones solo se mostraran en la fila activa en el momento.
- FocusedCell: Indica que los botones solo se mostraran en la celda activa en el momento.
Veamos el código:
[ToolboxBitmap(typeof(System.Windows.Forms.TextBox))] public class DataGridViewTextEditorColumn : DataGridViewColumn { private ShowButtonMode showButtonMode; private RepositoryTextEditor repositoryTextEditor; private IDesignerHost IDesignerHost { get { return this.DataGridView.Site.GetService(typeof(IDesignerHost)) as IDesignerHost; } } // Crea el editor de la celda en caso de no existir, en caso de existir // se estable el DataGridView que contiene la columna. private void CreateColumnEditor() { if (this.DataGridView == null || this.repositoryTextEditor != null) { if (this.repositoryTextEditor != null) this.repositoryTextEditor.DataGridViewOwner = this.DataGridView; return; } IDesignerHost host = this.IDesignerHost; this.ColumnEditor = host.CreateComponent(typeof(RepositoryTextEditor)) as RepositoryTextEditor; this.ColumnEditor.DataGridViewOwner = this.DataGridView; } public DataGridViewTextEditorColumn() : base(new DataGridViewTextEditorCell()) { this.showButtonMode = ShowButtonMode.Always; } [DefaultValue(typeof(ShowButtonMode), "Always")] public ShowButtonMode ShowButtonMode { get { return this.showButtonMode; } set { this.showButtonMode = value; } } public RepositoryTextEditor ColumnEditor { get { this.CreateColumnEditor(); return this.repositoryTextEditor; } set { this.repositoryTextEditor = value; if (this.DataGridView != null) this.DataGridView.Invalidate(); } } public override DataGridViewCell CellTemplate { get { return base.CellTemplate; } set { if (value != null && !value.GetType().IsAssignableFrom(typeof(DataGridViewTextEditorCell))) { throw new InvalidCastException("Must be a DataGridViewTextEditorCell"); } base.CellTemplate = value; } } public override object Clone() { DataGridViewTextEditorColumn clone = base.Clone() as DataGridViewTextEditorColumn; clone.ColumnEditor = this.ColumnEditor; clone.ShowButtonMode = this.ShowButtonMode; return clone; } }y el código de ShowButtonMode:
public enum ShowButtonMode { Always, FocusedRow, FocusedCell }
DataGridViewTextEditorColumn (II Parte)
DataGridViewTextEditorColumn (IV Parte)
Comentarios
Publicar un comentario