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